我有一个带引号文字分隔符的CSV文件。大多数90000行都很好,但是我有一些行包含一个包含引号和逗号的文本字段。例如,字段值为:
AB”,AB
当分隔时,这变为
“AB” “AB”
当SQL 2005尝试导入此内容时,我会收到错误,例如...
Messages Error 0xc0202055: Data Flow Task: The column delimiter for column "Column 4" was not found. (SQL Server Import and Export Wizard)
只有当引号和逗号一起处于文本值时,才会出现这种情况。像
这样的值AB“AB成为”AB“”AB“ 要么 AB,AB成为“AB,AB”
工作正常。
以下是一些示例行...
"1464885","LEVER WM","","B","MP17" "1465075",":PLT-BC !!NOTE!!","","B","" "1465076","BRKT-STR MTR !NOTE!","","B","" "1465172",":BRKT-SW MTG !NOTE!","","B","MP16" "1465388","BUSS BAR !NOTE!","","B","MP10" "1465391","PLT-BLKHD ""NOTE""","","B","MP20" "1465564","SPROCKET:13TEETH,74MM OD,66MM","ID W/.25"" SETSCR","B","MP6" "S01266330002","CABLE:224"",E122/261,8 CO","","B","MP11"
最后一行是问题的一个例子 - “”,导致错误。
答案 0 :(得分:4)
我遇到了SSIS的主要问题。 Access,Excel甚至DTS似乎做得很好,SSIS窒息。可变记录长度数据是另一个问题,但是,这些嵌入式限定符是一个主要问题。特别是如果您无法访问导入文件,因为它们位于您为获得访问权而支付的其他服务器上,甚至可能是4到5 GB的大小!不能只是在每次导入时“替换所有”。
您可能需要在名为“UnDouble”的Microsoft下载中查看此内容,此处是您可能尝试的另一个workaround。
在SQL Server 2008中似乎与SSIS一样,错误仍然存在。我不知道为什么他们没有在解析器中解决这个问题,但它就像我们在SSIS基本导入功能中回过头来一样。
更新11-18-2010:此错误仍存在于SSIS中。惊人的。
答案 1 :(得分:1)
如何:
将您的原文转换为:
"1464885","LEVER WM","","B","MP17"
"1465075",":PLT-BC !!NOTE!!","","B",""
"1465076","BRKT-STR MTR !NOTE!","","B",""
"1465172",":BRKT-SW MTG !NOTE!","","B","MP16"
"1465388","BUSS BAR !NOTE!","","B","MP10"
"1465391","PLT-BLKHD ""NOTE""","","B","MP20"
"1465564","SPROCKET:13TEETH,74MM OD,66MM","ID W/.25"" SETSCR","B","MP6"
"S01266330002","CABLE:224'';E122/261,8 CO","","B","MP11"
这似乎在SSIS中运行得很好。您可能必须以递归方式步骤3来计算一行中的3个空字段('';'';'';等等),但这里的底线是当您嵌入文本限定符时,您必须要转义它们或者替换它们。这将成为您在CSV创建过程中的一个教训。
答案 2 :(得分:1)
Microsoft says在双引号分隔字段内加倍双引号只是不起作用。计划在2011年底修复...
与此同时,我们将不得不使用其他答案中描述的变通方法。
答案 3 :(得分:0)
我只会搜索/替换“,并将其替换为
您是否可以访问原始文件?