在钻表中使用`store.format` ='csv'时如何处理字符串字段中的转义逗号

时间:2018-08-22 21:31:57

标签: apache-drill

在使用钻取脚本将一组parquet文件转换为csv时,遇到了其中某些字段包含逗号的问题。这会导致出现问题,因为钻探似乎不会自动在转换后的文件的字段周围添加任何转义的"<field>"'<field>'字符(例如,对于看起来像“软饮料,大”的字符串值)

脚本看起来像

/opt/mapr/drill/drill-1.11.0/bin/sqlline \
        -u jdbc:drill:zk=node001:5181,node002:5181,node003:5181 \
        -n $(tail -n+1 $basedir/src/drill-creds.txt | head -1) \
        -p $(tail -n+2 $basedir/src/drill-creds.txt | head -1) \
        --run=$sqldir

正在由钻运行的sql看起来像

alter session set `store.format`='csv';
create table dfs.myworkspace.`/path/to/csv/destination` as 
select .... 
from dfs.myworkspace.`/path/to/origin/files`

有人有共同的解决方法吗?有没有一种方法可以将转义字符添加到转换后的csv文件中(尝试检查文档(https://drill.apache.org/docs/create-table-as-ctas/),但找不到任何相关内容)?

1 个答案:

答案 0 :(得分:0)

您可以使用TSV或PSV格式,或者通过配置文件存储插件的格式插件来更新CSV单元格的分隔符:

在Drill UI中,选择 Storage ,然后 Update dfs存储插件,以格式找到 CSV 并添加<具有所需值的strong> 定界符 属性。

"csv": {
  "type": "text",
  "extensions": [
    "csv2"
  ],
  "skipFirstLine": false,
  "extractHeader": true,
  "delimiter": "^"
},

还请检查 转义 属性

查看更多: https://drill.apache.org/docs/text-files-csv-tsv-psv/#use-a-distributed-file-system