逗号使用BULK INSERT和格式文件导致问题

时间:2011-04-04 16:03:11

标签: sql file insert format bulk

我正在尝试使用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

非常感谢任何帮助。

谢谢,

克里斯。

2 个答案:

答案 0 :(得分:0)

就我所见,你已经做到了 - 从这里获取知识:

http://www.sqlservercentral.com/Forums/Topic18289-8-1.aspx#bm87418

基本上,将分隔符更改为“\”,\“”应该足够,因为最后一个字段中的逗号不是“,”但是,

尝试设置第一个和最后一个分隔符,如链接(“\”,\“”)和(“\”\ r“),看看是否有帮助?

或者,预处理文件并将“,”替换为## $ ##等一些垃圾,并替换为。 (或其他一些字符)然后## $ ##用“,”然后导入?除非,在最后一个领域中至关重要,否则一个点通常可以解决问题。

答案 1 :(得分:0)

除此之外,FIELDTERMINATOR值似乎没有任何影响,因为无论我是否在SQL for BULK INSERT中包含此值,结果仍然相同。因此,当格式文件终止符接管时,我将从现在开始将其保留。

问题仍然存在,对我来说,为什么引用文本中间的单个逗号会导致字段结束似乎很奇怪。