VB.Net 向 SQLite-DB 写入大量数据
Posted
技术标签:
【中文标题】VB.Net 向 SQLite-DB 写入大量数据【英文标题】:VB.Net write large amounts of data to SQLite-DB 【发布时间】:2015-04-16 20:01:43 【问题描述】:我有大量的行(目前从 10.000 到 200.000,可能会更多)我想保存在 SQLite 数据库中,因为这些数据只会在本地使用。 这些行由单个字符串组成,其中包含分隔符。根据我从哪里提取数据,行填充 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 非常感谢任何建议。
/问候
【问题讨论】:
您能否编辑您的问题以包含一些输入行作为示例,以显示要涵盖的变体?另外,“将始终专门为提取的数据创建表”是什么意思? 【参考方案1】:一个接一个地执行数千个插入确实非常慢。它将所有插入包装到事务中将极大地帮助您。
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
【讨论】:
@mall3i 很高兴它有帮助以上是关于VB.Net 向 SQLite-DB 写入大量数据的主要内容,如果未能解决你的问题,请参考以下文章
请问VB.NET中datagridview表里的数据怎样写入到数据库中
VB.net调用DLL,捕捉到AccessVioationException尝试读取或写入受保护的内存。这通常指示其他内存已损坏。