SQLiteバックエンドにデータを格納するVB.Netアプリケーションを作成しています。データは、ユーザーがインポートできるExcelブックに入っています。各ワークブックには、改訂されて新しいテーブルにインポートされるワークシート(約30,000行)があります。これを行う最も効率的な方法は何ですか?VB.NetのSQLiteデータベースにExcelデータを効率的にインポートする
私は現在、Excelから2D配列に全範囲を読み込んでいます。この配列の行をループし、各行を1000行ごとに実行される長いSQL文に追加します。しかし、これは配列ビットをループすることとSQLiteのステップに進むことの両方で痛みを伴います。私は助けることができませんが、これを行うより効率的な手段がなければならないと考える。
おかげで、以下
コード: 「は、第1 Excel.Worksheet
としてExcel.Workbook 薄暗いxlWorkSheetなどの新しいまずExcel.Application 点心xlWorkBookとしてのXLS reformater帳を開いて、私たちのデータに 点心xlAppを読みます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に関連する参照を見つけることができません ありがとう –
参照してくださいhttp://stackoverflow.com/questions/928873/how-do-i-bulk-insert -with-sqlite – Chriseyre2000