逗号导致使用批量插入和格式化文件时出现问题



我试图在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中包含该值,结果仍然是相同的。因此,我将从现在开始把它去掉,因为格式文件终止器将接管。

这个问题仍然存在,我觉得很奇怪,为什么引号中间的一个逗号会导致字段结束

相关内容

  • 没有找到相关文章

最新更新