2015-06-17 48 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

将内容写入存储将会阻止所有其他线程写入相同内容。你不能简单地使所有的东西都是多线程的。

在这种情况下,所有其他部分需要等待前一个完成。

相关问题