我有一个包含10000条以上记录的CSV文件,每条记录长约1000个字符,可以添加到sqlite数据库。
这样做有效,但速度很慢:
try{
while((line = reader.readLine()) != null){
preparedStatement = connection.prepareStatement("BEGIN");
preparedStatement.execute();
//All prepared statements with inserts and selects
preparedStatement = connection.prepareStatement("COMMIT");
preparedStatement.execute();
}
}catch(SQLException){
preparedStatement = connection.prepareStatement("ROLLBACK");
preparedStatement.execute();
}
为了加快速度,我只想做一个交易,所以我将其改为:
try{
preparedStatement = connection.prepareStatement("BEGIN");
preparedStatement.execute();
while((line = reader.readLine()) != null){
//All prepared statements
}
preparedStatement = connection.prepareStatement("COMMIT");
preparedStatement.execute();
}catch(SQLException){
preparedStatement = connection.prepareStatement("ROLLBACK");
preparedStatement.execute();
}
但是在大约1000次插入后我得到了这个例外:
org.sqlite.SQLiteException:[SQLITE_BUSY]数据库文件被锁定(数据库被锁定)
这是什么?我非常确定它是使用数据库的唯一一项任务。我怎么解决呢?
谢谢!