Могу ли я использовать sqlbulkcopy для вставки не строковых значений из файла csv в таблицу sql?vb.net sql bulkcopy non string values issue
У меня есть следующий код, чтобы создать DataTable:
Dim dt As New DataTable()
Dim line As String = Nothing
Dim i As Integer = 0
Using sr As StreamReader = File.OpenText("C:\Users\Administrator\Desktop\Sked Lente\Data\wingrd13.csv")
line = sr.ReadLine()
Do While line IsNot Nothing
Dim data() As String = line.Split(","c)
If data.Length > 0 Then
If i = 0 Then
For Each item In data
dt.Columns.Add(New DataColumn())
Next item
i += 1
End If
Dim row As DataRow = dt.NewRow()
row.ItemArray = data
dt.Rows.Add(row)
End If
line = sr.ReadLine()
Loop
End Using
Я также следующий код SqlBulkCopy:
Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings("SQLConnStr").ConnectionString)
cn.Open()
Using copy As New SqlBulkCopy(cn)
copy.ColumnMappings.Add(0, 0)
copy.ColumnMappings.Add(1, 1)
copy.ColumnMappings.Add(2, 2)
copy.ColumnMappings.Add(3, 3)
copy.ColumnMappings.Add(4, 4)
copy.ColumnMappings.Add(5, 5)
copy.ColumnMappings.Add(6, 6)
copy.DestinationTableName = "wingrd13"
copy.WriteToServer(dt)
End Using
End Using
Я получаю сообщение об ошибке в строке: copy.ColumnMappings.Add (6, 6)
Колонка в моей базе данных типа real.
С уважением
Спасибо, что я использовал это: datatabelOesskattings.Columns.Add (новый DataColumn («Plantjaar», GetType (Integer))). В моем столбце базы данных Sql задано значение int, а не null. Еще не повезло. – Gideon
ОК, но вы фактически конвертировали текст, который вы читали из файла CSV, в значения «Целое», прежде чем добавлять его в «DataTable»? Вот что я прямо сказал, что вам нужно было сделать в моем ответе. – jmcilhinney
Спасибо, я использовал следующее: .Add ("@ PLANTJAAR", SqlDbType.Int, 50, "PLANTJAAR"). Прекрасно работает. Еще раз, спасибо. – Gideon