I have this csv file, 几乎所有记录都可以正常处理,但是在两种情况下我遇到问题。
情况1: 包含引号内的引号的记录:
"some data "some data" some data"
案例2: 引号中包含逗号的记录:
"some data, some data some data"
我已经研究了这个问题,并开始研究提取器的引用参数,但是我观察到设置(quoting:false)可以解决情况1,而对于情况2则失败,并且设置(quoting:true)可以解决情况2,但不能解决情况1。
约束:没有更改数据文件的空间,将来的数据将进行相应的调整,但是对于这些现有数据,我必须解决。
答案 0 :(得分:0)
尝试此操作,将记录导入为一行,并使用双引号将行文本固定(对逗号执行相同的操作):
DECLARE @input string = @"/Samples/Data/Sample1.csv";
DECLARE @output string = @"/Output/Sample1.txt";
// Import records as one row
@data =
EXTRACT rowastext string
FROM @input
USING Extractors.Text('\n', quoting: false );
// Fix the row text using double quotes
@query =
SELECT Regex.Replace(rowastext, "([^,])\"([^,])", "$1\"\"$2") AS rowascsv
FROM @data;
OUTPUT @query
TO @output
USING Outputters.Csv(quoting : false);