2015-06-17 81 views
-4

我想使用java程序將數據加載到PostgreSQL表中。 在Java程序想使用的多線程和我使用COPY命令API使用多線程加載文件中的數據

CopyManager copyManager = ((PGConnection)conn).getCopyAPI(); 
FileReader fileReader = new FileReader(filename); 
copyManager.copyIn("COPY "+tblname+ " FROM STDIN DELIMITER ',' ", fileReader); 

我已經將文件劃分成「n」個零件,然後將每個線程加載部分成PostgreSQL表。

實施例:
文件:test.csv
螺紋= 3

則創建test1.csv,test2.csv,test3.csv。並且每個線程執行每個文件。 它工作正常。

現在我要檢查使用單個文件的多線程數據加載性能(而不是文件分割成N無文件)

例子:
文件:test.csv(含30000條記錄)
thread = 3(第1個線程執行第10000行,
第2個線程執行1000120000,第3個線程執行20001-30000);

三線程分割文件的內容並使用COPY將數據加載到Postgres中。

是否可以使用java多線程將文件和加載的記錄劃分爲Postgres?

+1

不管它是否可能,這將是愚蠢的。這些帖子是關於如何使文件閱讀多線程的? – Kayaman

+0

我看不到任何有效的原因。 –

回答

0

將內容寫入存儲將會阻止所有其他線程寫入相同內容。你不能簡單地使所有的東西都是多線程的。

在這種情況下,所有其他部分需要等待前一個完成。

相關問題