使用Excel创建具有特殊字符的CSV文件,然后将其导入使用SSIS分贝(Using Excel t

2019-08-02 08:35发布

借此XLS文件

然后我保存这个XLS文件为CSV,然后用文本编辑器打开它。 这是我所看到的:

Col1,Col2,Col3,Col4,Col5,Col6,Col7
1,ABC,"AB""C","D,E",F,03,"3,2"

我看到,在列C中的双引号字符被存储为AB""C ,该列的值被装入用报价和在数据中的双引号字符用2个引号字符替换以指示该引用在数据内发生并且不终止所述列的值。 我还看到,对于G列,值3,2 ,被封闭在引号,以便它是清楚的是,逗号数据内发生,而不是指示一个新列。 到现在为止还挺好。

我有点惊讶的是,所有的列值都没有加引号,但即使这似乎合理确定,当我以为EXCEL仅指定列delimieters当像commad或DBL引号字符特殊字符的数据存在。

现在,我尝试使用SQL Server导入CSV文件。 请注意,我指定一个双引号字符作为文本限定符字符。

和命令字符作为列分隔符。 但是请注意,SSIS进口3列错误,例如,未转换的两个连续的双引号字符作为双引号字符的单occurence。

我有什么做的就是Excel和SSIS相处?

一般人通过使用列分隔符chactacters将不太可能在数据发生,但是这不是一个真正的解决办法回避的问题。

我发现,如果我从这个修改文件

Col1,Col2,Col3,Col4,Col5,Col6,Col7
1,ABC,"AB""C","D,E",F,03,"3,2"

......这样的:

Col1,Col2,Col3,Col4,Col5,Col6,Col7
1,ABC,"AB"C","D,E",F,03,"3,2"

即删除C列的值连续两次报价,该数据是否正确,但是,这是一个有点混乱给我。 首先,如何SSIS确定B和C之间的双引号不会终止该列的值? 难道是因为下面的字符不是一个逗号列分隔符或行分隔符(CRLF)? 为什么不Excel导出这样说?

根据维基百科 ,这里有一对夫妇一个CSV文件的特质:

  1. 含有换行符字段(CRLF),双引号,和逗号应包含在双引号。 例如:

    “AAA”, “B CRLF BB”, “CCC” CRLF ZZZ,YYY,XXX

  2. 如果双引号用于封装领域,那么场内出现一个双引号必须由另一个双引号前面逃跑了。 例如:

    “AAA级”, “B”, “BB”, “CCC”

然而,它看起来像导入时SSIS不喜欢这种方式。 可以做些什么让Excel中创建包含用作列分隔符,分隔符的文本或行分隔符数据中的任何特殊字符的CSV文件? 没有理由认为它不能使用维基百科中规定的方法工作,。 这是我想用来做旧的MS DTS包...

更新:

如果我用记事本修改输入文件

Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8
"1","ABC","AB""C","D,E","F","03","3,2","AB""C"

Excel读取它只是罚款

但SSIS回报

The preview sample contains embedded text qualifiers ("). The flat file parser does not support embedding text qualifiers in data. Parsing columns that contain data with text qualifiers will fail at run time.

Answer 1:

结论:

就像错误信息在您的更新说...

The flat file parser does not support embedding text qualifiers in data. Parsing columns that contain data with text qualifiers will fail at run time.

在已确认的bug 微软连接 。 我鼓励大家阅读此点击此链接上述上,把你的票,让他们解决这个臭气熏天。 这是我遇到的最严重的错误的前10名。



Answer 2:

你需要使用逗号分隔符。

我用了一个竖线分隔符,没有文本限定符和它工作得很好。 这里是我的输出形成的文本文件。

1 | ABC | AB“C | d,E | F | 03 | 3,2

你必须在我看来,有3个选项。

  1. 将数据读入一个阶段表。
  2. 运行,你需要在列的任何更新查询
  3. 现在选择从舞台表并输出数据到一个平面文件。

要么

  1. 使用管道是你的分隔符。

要么

  1. 难道这一切在C#应用程序和代码生成它。
  2. 你可以行发送到一个脚本在SSIS和分析,并建立你想有作为的文件。

使用文本预选赛和“性格”分隔的领域肯定是有问题的。

玩得开心!



文章来源: Using Excel to create a CSV file with special characters and then Importing it into a db using SSIS