代码之家  ›  专栏  ›  技术社区  ›  lampShadesDrifter

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

  •  0
  • lampShadesDrifter  · 技术社区  · 6 年前

    当使用钻取脚本转换一组 parquet 文件到 csv ,遇到一些字段中有逗号的问题。这会导致一个问题,因为drill似乎不会自动添加任何转义 "<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
    

    drill运行的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 回复  |  直到 6 年前
        1
  •  0
  •   Vitalii Diravka    6 年前

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

    保管部 ,然后 dfs存储插件,查找 CSV公司 在里面 格式 加上 分隔符 具有所需值的属性。

    "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