我想在SQLite数据库中保存大量的行(从目前为止,从10.000到200.000,可能会更多),因为数据只会在本地使用。 行由单个字符串组成,其中包含分隔符。根据我从中提取数据的位置,行填充2到10个字段。 所以我每行有不同数量的字符串,并且需要一种可以采用不同数量的方法。始终专门为拉出的数据创建表格。 我目前有一种实际工作的方法,但速度很慢。
基本上我根据我必须传递的变量数量构造一个SQL命令字符串。我通过在变量周围包装一个简单的插入命令(我在其中定义字段)然后传递每一行来完成此操作。工作得很好30行,对于20k行来说真的不行。
有人可以让我继续前进吗?
示例代码:
For Each row As string In t
line = Replace(row, "|", "','")
cmd.CommandText = cmd_string + line + "')"
cmd.ExecuteNonQuery()
Next
示例构造命令:
"INSERT INTO MYTABLE(COLUMN1, COLUMN2) VALUES ('IT ','DE')"
我认为这种方法完全废话:D 任何建议都非常感谢。
/问候
答案 0 :(得分:2)
一个接一个地执行数千个插入确实非常慢。它将极大地帮助您将所有插入包装到事务中。
Using t As SQLiteTransaction = sqlcon.BeginTransaction 'sqlcon being the SQLiteConnection
For Each row As string In t
line = Replace(row, "|", "','")
cmd.CommandText = cmd_string + line + "')"
cmd.ExecuteNonQuery()
Next
t.Commit()
End Using
你基本上收集了你想要做的所有插入,当你完成它们时,它们都是在一个大的旋风中执行的。这会加速很多事情。
这是关于交易的教程:
http://www.tutorialspoint.com/sqlite/sqlite_transactions.htm