无法使用U-SQL提取简单的Csv文件

时间:2018-08-30 06:47:22

标签: csv extraction azure-data-lake u-sql

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。

约束:没有更改数据文件的空间,将来的数据将进行相应的调整,但是对于这些现有数据,我必须解决。

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);