微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

转义字符导致 csv 表出现问题并创建新列

如何解决转义字符导致 csv 表出现问题并创建新列

我正在使用以下代码将 csv 数据从 GCS 加载到大查询

try{
      
        source="gs://folder/all*";
        ProjectId="project";
        datasetId="dataset";
        tableId="table";
        schema={"configuration.load.autodetect":'true'};
             
        var tableReference = BigQuery.newTableReference();
        tableReference.setProjectId(ProjectId);
        tableReference.setDatasetId(datasetId);
        tableReference.setTableId(tableId);

        var load = BigQuery.newJobConfigurationLoad();
        load.setDestinationTable(tableReference);
        load.setSourceUris([source]);
        load.setSourceFormat('CSV');
        load.allowQuotednewlines=true;
        load.setAutodetect(true);
        load.setMaxBadRecords(100000);
        load.setWritedisposition('WRITE_TruncATE');

        var configuration = BigQuery.newJobConfiguration();
        configuration.setLoad(load);

        var newJob = BigQuery.newJob();
        newJob.setConfiguration(configuration);

        var job = BigQuery.Jobs.insert(newJob,ProjectId);

    }catch(err){ 
        Logger.log('Table upload error: %s',err);  
    } 

代码运行并加载文件,但某些行的值包含“(\)”,该值将值移动 1 列。这会导致向数据中添加另一列。

例如。如果设备名称是“Google ChromeBook (CS\059)”,那么它会将值拆分为“Google ChromeBook (CS\”和“059”,它们会移动下一列。有没有办法处理这个问题?确保该值不会因为“\”而发生变化。

所以,这发生在表格中,

桌子应该是怎样的:

用户 设备名称 国家
1234 Google ChromeBook (CS\059) GB
1235 像素 XL AU
1236 HTC 320 CA

这是怎么回事,

用户 设备名称 国家 string_0
1234 Google ChromeBook (CS\ 059) GB
1235 像素 XL AU \N
1236 HTC 320 CA \N

所以,基本上这就是列中以反斜杠作为值的所有行的情况。

如果我将 Max Records 设为 0,该表将不会加载,因为它会给出错误“Found 33 column(s) while expected 32.”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。