TSQL批量插入

时间:2010-09-03 11:17:50

标签: sql sql-server tsql

我有这样的csv文件,字段分隔符为,。我的csv文件非常大,我需要将它导入SQL Server表。这个过程必须是自动化的,而不是一次性工作。

所以我使用Bulk Insert来插入这样的csv文件。但是今天我收到了一个有这样行的csv文件

1,12312312,HOME   ,"House, Gregory",P,NULL,NULL,NULL,NULL

问题是批量插入创建了这一行,特别是这个字段“House,Gregory” 作为两个领域的一个''众议院'和第二个'格雷戈里''。

有没有办法让批量插入理解双引号会覆盖逗号的行为? 当我用Excel打开这个csv时,它通常将这个字段视为'House,Gregory'

3 个答案:

答案 0 :(得分:3)

您需要预处理文件,请查看以下答案:

SQL Server Bulk insert of CSV file with inconsistent quotes

答案 1 :(得分:2)

如果表格中的每一行都有双引号,您可以使用format files

指定,"",作为该列的列分隔符

如果没有,请将其更改,或者您必须在某处编写一些聪明的预处理例程。

文件格式需要一致才能使任何SQL Server工具正常工作

答案 2 :(得分:0)

由于您指的是Sql Server,我假设您也可以访问Access(Microsoft友好环境)。如果您有Access,我建议您使用其导入向导。它比Sql Server的导入向导(甚至是版本2014)更加智能,并且比Bulk Insert sql命令更智能。

它有一个小部件,您可以将文本分隔符定义为",它也不会对字符串长度产生任何问题,因为它使用Access数据类型Text。 如果您对Access中的结果感到满意,可以稍后将它们无缝地导入到Sql Server。

将数据从Access移动到Sql的最佳方法是使用Sql Server Migration Assistant,here