有效的 CSV 归档导入失败,数据位于右双引号 (") 和字段分隔符之间:字段开头为

Pen*_*m10 1 google-bigquery

我正在尝试将 CSV 文件从 GS 导入到 BQ 中。

我使用的cmd是:

$ bq load --field_delimiter=^ --quote='"' --allow_quoted_newlines --allow_jagged_rows --ignore_unknown_values wr_dev.drupal_user_profile gs://fls_csv_files/user_profileA.csv uid:string,first_name:string,last_name:string,category_id:字符串,logo_type:字符串,country_id:字符串,电话:字符串,phone_2:字符串,地址:字符串,address_2:字符串,城市:字符串,州:字符串,zip:字符串,公司名称:字符串,创建:字符串,更新:字符串,订阅:字符串

报告的错误是

File: 0 / Line:1409 / Field:14, Data between close double quote (")
and field separator: field starts with: <Moreno L>
Run Code Online (Sandbox Code Playgroud)

样本数据是:

$ sed -n '1409,1409p' user_profileA.csv
$ 1893^"Moreno"^"Jackson"^17^0^1^"517-977-1133"^"517-303-3717"^""^""^""^""^""^"Moreno L Jackson \"THE MOTIVATOR!\" "^0^1282240785^1
Run Code Online (Sandbox Code Playgroud)

这是从 MySQL 生成的:

SELECT * INTO OUTFILE '/opt/mysql_exports/user_profileA.csv' 
FIELDS TERMINATED BY '^' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
FROM p;
Run Code Online (Sandbox Code Playgroud)

为什么我在 BQ 中收到错误消息?如何正确从具有换行符的 MySQL CSV 文件中导出(CR并且LF是混合的,因为它是来自 Windows 或 Mac 的用户输入)

几个作业 ID:
作业 ID:aerobic-forge-504:bqjob_r75d28c332a179207_0000014710c6969d_1
作业 ID:aerobic-forge-504:bqjob_r732cb544f96e3d8d_0000014710f8ffe1_1

更新

显然更多的是这个。我使用了5.5.34-MariaDB-wsrep-logINTO OUTFILE,要么是错误,要么是错误,但我得到了无效的 CSV 导出。我必须使用其他工具来导出正确的 CSV。(工具:SQLYog)

它有双引号问题,例如此处的字段 14 有错误:

3819^Ron ^Wolbert^6^0^1^6123103169^^^^^^^""Lil"" Ron's^0^1282689026^1
Run Code Online (Sandbox Code Playgroud)

Fel*_*ffa 5

2019 年更新:

试试这个作为替代方案:

  • 将 MySQL 备份文件加载到 Cloud SQL 实例中。
  • 直接从 MySQL 读取 BigQuery 中的数据。

更长的操作方法:


在 CSV 中对双引号进行编码的正确方法是在其前面放置另一个双引号。

所以而不是:

"Moreno L Jackson \"THE MOTIVATOR!\"...
Run Code Online (Sandbox Code Playgroud)

有:

"Moreno L Jackson ""THE MOTIVATOR!""...
Run Code Online (Sandbox Code Playgroud)