使用SQL Server 2012,我们尝试对以逗号分隔的csv文件的简单表(所有列均为NVARCHAR)进行批量插入,但是当数据中包含逗号时会遇到问题。一切正常,但请考虑在csv文件中找到以下行:
,,"Test",,"Korea, Republic of",,,,
我们的BULK INSERT可以正确插入空值和“测试” ,但是由于它不会查找双引号,因此会拆分值“韩国,共和国” 分为“韩国”和“ 共和国” ,而显然我们想要“韩国共和国” 。现在,我对此进行了研究,发现可以使用格式文件。很好,我们可以说引号分隔了格式文件中每个单元格的数据,但现在的问题是,csv文件中的空值不再像我之前显示的示例那样起作用。那么应该是:
"","","Test","","Korea, Republic of","","","",""
我们已经研究了一段时间了,我认为我们发现的唯一发现是SQL Server 2017中BULK INSERT的一项新功能,但我们使用的是2012年,并且不可能进行升级。另外,由于管道分隔,因此更改源文件的可能性很小,实际上没有问题...