TSQL批量插入

3

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

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

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

问题在于Bulk Insert会将这一行,特别是"House, Gregory"字段拆成两个字段:'"House' 和 ' Gregory"'。
有没有办法让Bulk Insert理解双引号覆盖逗号的行为呢?当我用Excel打开这个csv文件时,它可以正常地看到这个字段作为'House, Gregory'。
3个回答

3

那么大小与此有何关系?如果您无法更改文件,则预处理是答案。或者让您的提供商正确地为您提供数据,所有列都用引号括起来或使用其他分隔符而不是逗号(我会退回任何尝试使用逗号分隔文件的文件,这是不可接受的)。 - HLGEM

2
如果表中的每一行都有双引号,您可以使用格式化文件指定,"",作为该列的列分隔符。
如果没有,请将其更改,否则您将不得不在某个地方编写一些聪明的预处理程序。
任何SQL Server工具都需要文件格式一致才能正常工作。

0

由于您提到了Sql Server,我假设您也有Access可用(Microsoft友好环境)。如果您确实有Access,则建议使用其导入向导。它比Sql Server的导入向导(甚至是2014版本)更智能,也比Bulk Insert sql命令更智能。

它有一个小部件,您可以定义文本分隔符为“,”,它还可以使用Access数据类型Text而不会出现字符串长度问题。如果您对Access中的结果满意,可以将它们无缝地导入到Sql Server中。

从Access移动数据到Sql的最佳方法是使用Sql Server Migration Assistant,在这里可用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接