サイズが80MBの大規模なExcelファイルからデータをインポートしようとしていますが、 VB.NETを使用してSQL Serverテーブルに200万行。SQL ServerのExcelファイルから大きなデータをインポートする方法
BulkCopyメソッドを使用してデータをSQLサーバーテーブルにコピーしました。しかし、大きなExcelファイルのデータを読み込んでいるときに、OutOFMemoryExceptionの問題が発生します。この問題を解決するためにExcelから大量のデータを読み込む際には、より良い方法がありますか?
また、列のデータ型をnvarchar(max)として指定しています。テーブルを動的に作成しているときに適切なデータ型を選択できる回避策はありますか?ここで
は、コードスニペットです:
Public Function BulkInsertDataTable(ByVal connectionString As String, ByVal tableName As String, ByVal table As DataTable, ByVal con1 As SqlConnection, ByVal tran As SqlTransaction) As Boolean
''IN USE - DO NOT REMOVE
Dim cmd1 As SqlCommand
Dim qry1 As String
If con1.State <> ConnectionState.Open Then
con1.Open()
End If
Dim tname As String = tableName
qry1 = "CREATE TABLE [" & tname & "] ("
Dim bulkCopy As New SqlBulkCopy(con1, SqlBulkCopyOptions.Default, tran)
bulkCopy.DestinationTableName = "[" & tableName & "]"
For j = 0 To table.Columns.Count - 1
If j <> table.Columns.Count - 1 Then
qry1 = qry1 & "[" & table.Columns(j).ColumnName & "] nvarchar(max),"
Else
qry1 = qry1 & "[" & table.Columns(j).ColumnName & "] nvarchar(max))"
End If
bulkCopy.ColumnMappings.Add(j, j)
Next
cmd1 = New SqlCommand(qry1, con1)
cmd1.Transaction = tran
cmd1.ExecuteNonQuery()
bulkCopy.WriteToServer(table)
bulkCopy.Close()
BulkInsertDataTable = True
End Function
どのラインでメモリ不足例外が発生しますか? –
@AndrewMorton、それは私のCSVファイルからデータを読み取っている間にエラーが発生します。 csvData = File.ReadAllText(targetPathwithName) – rahul16590