gpt4 book ai didi

java - 如何有效地将数据从 CSV 加载到数据库中?

转载 作者:行者123 更新时间:2023-12-01 19:28:38 24 4
gpt4 key购买 nike

我有一个包含数据的 CSV/TSV 文件,并希望将该 CSV 数据加载到数据库中。我正在使用 Java 或 Python 和 PostgreSQL 来做到这一点(我无法改变这一点)。

问题是,对于每一行,我都会进行 INSERT 查询,如果我有 600.000 行,那么效率就不那么高了。有没有更有效的方法?

我想知道是否可以获取更多行并创建一个大查询并在我的数据库上执行它,但我不确定这是否有帮助,或者我应该将数据分成 100 部分并执行 100查询?

最佳答案

CSV 文件是否与 copy from stdin 要求的格式兼容,那么最有效的方法就是使用 CopyManager API。

参见this answerthis answer例如代码。

<小时/>

如果您的输入文件与 Postgres 的复制命令不兼容,您将需要自己编写 INSERT。但是您可以使用 JDBC 批处理来加快该过程:

大致的内容:

PreparedStatement insert = connection.prepareStatement("insert into ...");
int batchSize = 1000;
int batchRow = 0;
// iterate over the lines from the file
while (...) {
... parse the line, extract the columns ...
insert.setInt(1, ...);
insert.setString(2, ...);
insert.setXXX(...);
insert.addBatch();
batchRow ++;
if (batchRow == batchSize) {
insert.executeBatch();
batchRow = 0);
}
}
insert.executeBatch();

JDBC URL 中使用 reWriteBatchedInserts=true将进一步提高性能。

关于java - 如何有效地将数据从 CSV 加载到数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60534120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com