【发布时间】:2015-11-27 00:20:13
【问题描述】:
这可能会被很多人问到,但是,
所以我正在尝试使用 java 将 400 万条记录插入数据库,
我做了很多谷歌搜索并尝试了访问和 MySQL。两者几乎一样,
使用 MySQL 我尝试了statement.addBatch();,但仍然需要很长时间。
问题是,我能得到的最佳时间是什么时候?最好的方法是什么?
counter++;
String sqlQuery = "INSERT INTO employees VALUES("some query")";
sqlState.addBatch(sqlQuery);
if (counter == 1000) {
sqlState.executeBatch();
counter = 0;
}
我也使用 Batch 对吗?
【问题讨论】:
-
如果您知道数据是一致的,您可能可以在插入之前删除所有约束并在完成后添加它们。这应该会极大地提高性能。
-
目前的记录是如何存储的?它们在 SQL 文件中吗?如果是这样,您应该能够直接将其作为脚本运行,而无需使用 Java。只是一个想法。
-
这听起来像是数据的初始加载。您可能想绕过 Java 直接插入。对于 MySQL,这将使用LOAD DATA。正如@ReutSharabani 所说,在加载期间删除所有索引和外键将有很大帮助。重建包含 400 万条记录的索引比一次插入一条记录要快得多。
-
@ReutSharabani 我没有关注你,我是新手