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 将日期写入 Access DB

VB.NET 按两列分组并将结果写入数组

向 SQL Server VB.NET 数据库添加多个值

如何使用 VB.NET 向两个表中插入数据?

VB.net调用DLL,捕捉到AccessVioationException尝试读取或写入受保护的内存。这通常指示其他内存已损坏。