VB.Net写入SQLite数据库大量的数据
问题描述:
我有大量的行(从10.000到200.000到目前为止,可能会变得更多),我想保存在SQLite数据库中,因为数据只是要在本地使用。 行由包含分隔符的单个字符串组成。根据我从哪里提取数据,行填充2到10个字段。 所以我有不同数量的每行字符串,并需要一个可以采取不同数量的方法。一张表总是专门为拉取的数据创建的。 我目前有一个方法,实际上工作,但速度慢。VB.Net写入SQLite数据库大量的数据
基本上我基于我必须传递的变量的数量构造一个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 任何意见是非常赞赏。
/关注
答
一个接一个地执行数千个插入程序确实非常慢。它将极大地帮助您将所有插入操作包装到事务中。
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
您可以编辑您的问题,包括一些输入线为例,显示的变化有哪些?另外,你的意思是“一张表总是专门为拉取的数据创建的”。 – diegohb