是否有任何方法将数据插入数据库与循环

时间:2014-04-28 01:39:53

标签: java loops

最近我向我的sqlite数据库循环了1000 000行数据,我的Netbeans编译器花了 2367 分钟(39小时)来完成数据的处理。

我使用For循环进行循环过程,我想知道是否有任何有效且更快的练习让程序循环得比这快得多。

目前我正在使用这个简单的for循环作为我的代码。

for(i = 0; 1 < 1000000; i ++){

//code to insert 1 row of data to sqlite database

} 

根据我对here的研究,while循环和迭代器循环不会导致与for循环相比有任何显着的性能。

有人可以帮我这个,我真的很感激。

2 个答案:

答案 0 :(得分:2)

for循环本身并不昂贵,但是如果您要将很多行插入数据库,则应使用事务,这会将插入调用分组到一个调用中。否则,分别添加1,000,000行会产生很大的I / O成本。

BEGIN TRANSACTION;
INSERT ...;
COMMIT TRANSACTION;

答案 1 :(得分:2)

我认为问题是您正在尝试为每个循环创建连接,或者尝试为每次迭代执行insert语句,请考虑使用批处理。每5000或10000插入批次插入:

String sql = "insert into employee (name, city, phone) values (?, ?, ?)";
Connection connection = new getConnection();
PreparedStatement ps = connection.prepareStatement(sql);

for (Employee employee: employees) {

    ps.setString(1, employee.getName());
    ps.setString(2, employee.getCity());
    ps.setString(3, employee.getPhone());
    ps.addBatch();
}
ps.executeBatch();