转义字符导致 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 (将#修改为@)