使用多线程从文件加载数据

时间:2015-06-17 11:25:49

标签: java postgresql

我想使用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个文件)

示例
file:test.csv(包含30000条记录)
thread = 3(第1个线程执行第1 10000行,第2个线程执行1000120000,第3个线程执行20001-30000);

三个线程划分文件内容并使用COPY将数据加载到Postgres中。

是否可以使用java多线程将文件和加载的记录分成Postgres?

1 个答案:

答案 0 :(得分:0)

将某些内容写入存储将阻止所有其他线程写入相同内容。你不能简单地把所有东西都做成多线程。

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