将Google Cloud SQL导出为CSV时的自定义定界符

时间:2019-04-16 10:32:44

标签: google-bigquery google-cloud-sql

我已经成功地使用默认分隔符“,”将GCloud SQL导出到CSV。我想将此CSV导入Google Big Query,并且成功完成了此操作。

但是,我遇到了一个小问题。我的某些单元格/字段中有“,”。这会导致Big Query导入过程无法正常运行。例如:

"Budi", "19", "Want to be hero, and knight"

我的问题是:

  • 是否可以使用自定义分隔符导出Google Cloud SQL,例如“ |”?
  • 如果没有,如何使上述示例数据导入Google Big Query中并成为3个字段/单元格?

干杯。

2 个答案:

答案 0 :(得分:1)

  

是否可以使用自定义分隔符导出Google Cloud SQL,例如“ |”?

是的,请参阅BigQuery的文档页面如何设置此link中提供的加载选项

您需要在命令中添加--field_delimiter = '|'

从文档中:

  

(可选)CSV文件中字段的分隔符。分隔符可以是任何ISO-8859-1单字节字符。要使用128-255范围内的字符,必须将字符编码为UTF8。 BigQuery将字符串转换为ISO-8859-1编码,并使用编码后的字符串的第一个字节以原始的二进制状态拆分数据。 BigQuery还支持转义序列“ \ t”以指定制表符分隔符。默认值为逗号(,)。

答案 1 :(得分:0)

据我所知,有一种从CloudSQL导出到CSV时设置自定义分隔符的方法。我试图通过如下所示选择查询来引入自己的定界符:

select column_1||'|'||column_2 from foo

但是,这只会导致CloudSQL将整个结果转义为带双引号的结果CSV。这也与说明以下内容的文档一致:

以CSV格式导出等同于运行以下SQL语句:

  SELECT <query> INTO OUTFILE ... CHARACTER SET 'utf8mb4'
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
    ESCAPED BY '\\' LINES TERMINATED BY '\n'

https://cloud.google.com/sql/docs/mysql/import-export/exporting