VB.Net将大量数据写入SQLite-DB

时间:2015-04-16 20:01:44

标签: sql vb.net sqlite

我想在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 任何建议都非常感谢。

/问候

1 个答案:

答案 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