我试图在SQL Server上使用BULK INSERT导入。csv文件和格式文件。我已经创建了格式文件,并为每个值设置了正确的字段终止符。格式文件已被正确验证,我已成功导入一些测试数据。
然而,当遇到引号文本中间的逗号时,我有一个问题,例如:
"SB","7Y4386429Y0351805","B5503",","Chris",1,10,"Paypal","你好,很抱歉延迟付款,我将很快发送付款。"
(示例数据)
我已经将格式文件设置为正确识别引号和非引号字段,但是最后一个字段中间有一个逗号,这会在导入时产生错误。
我有FieldTerminator设置为",",并试图完全离开它,但不应该忽略终止符,而不是使用格式文件中的终止符吗?
我不明白为什么逗号会导致字段结束,因为字段被引号包围。这是故意的吗?当然,逗号应该被忽略,因为它不匹配格式文件中的任何字段终止符?
我在这里有什么选择?有问题的数据来自Paypal,所以他们不太可能改变导出的方式。
任何想法?
如果重要的话,我已经在下面展示了格式文件的第一部分(实际文件包含56行)。所有56行具有相同的SQLCHAR数据类型、相同的长度和相同的结束值。
10.0
56
1 SQLCHAR 0 0 """ 0 DUMMY SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 100 "","" 1 CH SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 100 "","" 2 TransactionID SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 100 "","" 3 InvoiceID SQL_Latin1_General_CP1_CI_AS
5 SQLCHAR 0 100 "","" 4 PayPalReferenceID SQL_Latin1_General_CP1_CI_AS
任何帮助都将非常感激。
谢谢,克里斯。
在我看来,你做得很对——从这里获取知识:
http://www.sqlservercentral.com/forums/topic18289 - 8 - 1. - aspx # bm87418
本质上,将分隔符更改为"",""应该足够了,因为最后一个字段中间的逗号不是","而是,
尝试在链接中设置第一个和最后一个分隔符("","")和(""r"),看看是否有帮助?
或者,预处理文件并将","替换为一些垃圾,如##$##,并替换为。(或其他字符),然后##$##加上",",然后导入?除非在最后一个字段中是至关重要的,否则点通常就可以了。
进一步,FIELDTERMINATOR值似乎没有任何影响,因为无论我是否在BULK INSERT的SQL中包含该值,结果仍然是相同的。因此,我将从现在开始把它去掉,因为格式文件终止器将接管。
这个问题仍然存在,我觉得很奇怪,为什么引号中间的一个逗号会导致字段结束