2014-01-17 81 views
1

我知道,這樣做:寫入數據流到PostgreSQL

COPY test FROM '/path/to/csv/example.txt' DELIMITER ',' CSV; 

我可以導入CSV數據到PostgreSQL。

但是,我沒有靜態的csv文件。我的csv文件一天下載數次,並且包含先前已導入數據庫的數據。所以,要獲得一個一致的數據庫,我不得不leave out這個舊數據。

我最好的想法是實現這一點,就像上面那樣。然而,最糟糕的情況是java程序會手動檢查每個帶有csv文件的數據庫條目。任何有關實施的建議?

我真的很感謝你的回答!

+3

您可以將完整文件複製到臨時表中,然後將INSERT ... SELECT ...僅記錄到實際表中。 –

+1

聽起來就像您正在尋找批量數據合併,即複製忽略重複項,或複製upsert。如果是這樣,請參閱http://stackoverflow.com/q/13947327/398670,http://stackoverflow.com/q/17267417/398670 –

回答

1

您可以使用COPY命令和MERGE臨時表將實時表中的最新數據轉儲到臨時表。

如果您使用JAVA程序執行COPY命令,請嘗試使用CopyManager API。