【发布时间】:2017-06-06 01:36:36
【问题描述】:
我尝试了几种 csv 格式(不同的转义字符、引号和其他设置)从 MySQL 导出数据并将其导入 BigQuery,但我无法找到适用于所有情况的解决方案。
Google SQL requires 以下代码用于从/向 MySQL 导入/导出。虽然 Cloud SQL 不是 BigQuery,但它是一个很好的起点:
SELECT * INTO OUTFILE 'filename.csv' CHARACTER SET 'utf8'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '' FROM table
目前我使用以下命令将压缩的 csv 导入 BigQuery:
bq --nosync load -F "," --null_marker "NULL" --format=csv PROJECT:DATASET.tableName gs://bucket/data.csv.gz table_schema.json
一方面,bq 命令不允许设置转义字符(" 被另一个" 转义,这似乎是一个定义明确的CSV 格式)。另一方面,\" 作为 MySQL 导出的转义字符会导致 "N 作为 Null 值,这也不起作用:
CSV table references column position 34, but line starting at position:0 contains only 34 columns. (error code: invalid)
所以我的问题是:如何在 SQL 中为 MySQL 编写(与表无关的)导出命令,以便可以将生成的文件加载到 BigQuery 中。应该使用哪个转义字符以及如何处理/设置空值?
【问题讨论】:
-
是否将 --null_marker 设置为“N 工作?
-
@Tianzhou 我试过
--null_marker to "\"N"没有成功。
标签: mysql csv google-bigquery