SqlBulkCopy从CSV到SQL Datatable

时间:2010-05-24 18:03:34

标签: .net vb.net sql-server-2005

我正在使用SQL Server 2005,VB.NET 2005.我希望能够将一个非常大的ex​​cel文件导入名为“XYZ”的SQL表中

我通过以下方式做到了这一点:
1.将excel文件另存为csv。(使用SaveAs XLCSV选项)
2.从CSV构建数据表“ABC”(使用ODBC连接和选择*来自'*'。csv命令)
3.将数据表“ABC”复制到数据库表“xyz”中(使用sqlBulkCopy.WriteToServer())

它工作正常没有任何错误,但当我检查我的数据库时,我发现某些列的数据类型已被更改,因此它没有复制一些记录。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

我认为最好在SQL服务器中创建目标表并使用T-SQL BULK INSERT插入CSV。然后在表中显式显示数据类型。使用中间数据库存在推断错误数据类型的风险,以及冗余复制数据。

答案 1 :(得分:0)

schema.ini可以定义多个csv文件,如下所示:

[customer.csv]
Format=CSVDelimited
CharacterSet=ANSI
ColNameHeader=True
Col1=customerID Long
Col2=customerName Text Width 128
Col3=comments Memo

[order.csv]
Format=CSVDelimited
CharacterSet=ANSI
ColNameHeader=True
Col1=orderID Long
Col2=customerID Long
Col3=orderDate DateTime

[orderDetail.csv]
Format=CSVDelimited
CharacterSet=ANSI
ColNameHeader=True
Col1=orderID Long
Col2=itemID Long
Col3=Quantity Short

有关schema.ini和支持的数据类型的更多信息,请访问 http://msdn.microsoft.com/en-us/library/ms709353(VS.85).aspx