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

我正在尝试使用SQL Server上的BULK INSERT和格式文件导入.CSV文件。我已经创建了格式文件并为每个值设置了正确的字段终止符。格式文件已正确验证,我已成功导入一些测试数据。 但是当我在引用文本中遇到逗号时遇到问题,如下所示: “SB”,“7Y4386429Y0351805”,“B5503”,“”,“克里斯”,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“),看看是否有帮助? 或者,预处理文件并用## $ ##和replace替换一些垃圾替换“,”。 (或其他一些字符)然后## $ ##用“,”然后导入?除非,在最后一个领域中至关重要,否则一个点通常可以解决问题。     
除此之外,FIELDTERMINATOR值似乎没有任何影响,因为无论我是否在SQL for BULK INSERT中包含此值,结果仍然相同。因此,我将从现在开始将其保留,因为格式文件终止符接管。 但问题仍然存在,对于我来说,为什么引用文本中间的单个逗号会导致字段结束似乎很奇怪。     

要回复问题请先登录注册