我创建了一个将数据存储在SQLite后端的VB.Net应用程序。数据出现在用户可以从中导入的excel工作簿中。每个工作簿都有一个工作表(约30,000行),可以重新格式化并导入到新表中。什么是最有效的方式来做到这一点?将Excel数据导入VB.Net中的SQLite数据库的高效方法
我目前正在阅读从Excel到整个范围的二维数组。遍历该数组中的行并将每行添加到每千行执行一个较长的SQL语句。但是,在循环数组位和推入SQLite步骤时,这是非常缓慢的。我不禁想到,必须有一个更有效的方法来做到这一点。
谢谢,下面
代码: “首先打开XLS reformater书,在我们的数据 昏暗xlApp作为新Excel.Application 昏暗xlWorkBook作为Excel.Workbook 昏暗xlWorkSheet作为Excel.Worksheet
阅读xlWorkBook = xlApp.Workbooks.Open(strFile)
xlWorkSheet = xlWorkBook.Worksheets("ToDSS")
Dim r As Excel.Range = xlWorkSheet.UsedRange
Dim array(,) As Object = r.Value(Excel.XlRangeValueDataType.xlRangeValueDefault)
xlWorkBook.Close()
xlApp.Quit()
releaseObject(xlApp)
releaseObject(xlWorkBook)
releaseObject(xlWorkSheet)
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
'now loop through the rows inserting each into the db
Dim curDate As Date
strSQL = ""
Dim batch As Integer = 0
For row As Integer = 16 To array.GetUpperBound(0)
strSQL += "INSERT INTO scenario_" & strScenarioName & " VALUES ('"
curDate = array(row, 1)
strSQL += curDate.ToString("yyyy'-'MM'-'dd") + "'"
For col = 2 To 30
strSQL += ", " & array(row, col)
Next
strSQL += ");" & vbCrLf
If batch > 1000 Or row = array.GetUpperBound(0) Then
Debug.Print(Str(row))
SQLcommand.CommandText = strSQL
SQLcommand.ExecuteNonQuery()
Debug.Print("pushed")
strSQL = ""
batch = 0
Else
batch += 1
End If
Next
SQLcommand.Dispose()
SQLconnect.Close()
这可能工作。我不熟悉批量加载,并且找不到与sqlite和VB.Net相关的任何引用。 谢谢 – 2012-02-10 23:17:28
请参阅http://stackoverflow.com/questions/928873/how-do-i-bulk-insert -with-sqlite – Chriseyre2000 2012-02-11 10:59:15