SQLite 백엔드에 데이터를 저장하는 VB.Net 응용 프로그램을 만들고 있습니다. 데이터는 사용자가 가져올 수있는 Excel 워크 북으로 제공됩니다. 각 통합 문서에는 하나의 워크 시트 (약 30,000 개의 행)가 있으며이 테이블은 조금씩 수정되어 새 테이블로 가져옵니다. 이 작업을 수행하는 가장 효율적인 방법은 무엇입니까?VB.Net의 SQLite db로 Excel 데이터를 가져 오는 효율적인 방법
저는 현재 Excel에서 2D 배열로 전체 범위를 읽고 있습니다. 이 배열의 행을 반복하고 각 행을 매 1,000 행마다 실행되는 긴 SQL 문에 추가합니다. 하지만이 작업은 배열 비트를 반복하면서 SQLite 단계로 진행하는 데 어려움을 겪습니다. 나는 이것을 할 수있는보다 효율적인 수단이 있어야한다고 생각하지만 도움을 줄 수는 없다.
감사합니다, 아래
코드 : '먼저 XLS의 reformater 책을 열고 우리의 데이터 Excel.Worksheet으로
Excel.Workbook 희미한 xlWorkSheet으로 새로운이 Excel.Application 희미한 xlWorkBook으로 희미한 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