导入BigQuery时指定转义字符。 “错误:右双引号(“)和字段分隔符之间的数据。”

时间:2019-01-25 11:20:49

标签: google-bigquery

我正在尝试将大量.csv文件导入Google BigQuery。

我的一个String列有时包含一个数组,该数组包含用\进行转义的双引号。示例:

... ,"{\"ex1\":\"somestuffhere\"\,\"ex2\":\"somestuffhere\"\,\"ex3\":\"somestuffhere\"}", ...

我认为该问题是默认情况下由BigQuery引起的,期望双引号与另一个双引号-""一起转义。我已经尝试过向--quote参数发送不同的参数,但是它不能按我希望的那样工作。

我正在尝试的当前命令行加载命令:

bq load --noreplace --skip_leading_rows=1 --allow_jagged_rows='true' --ignore_unknown_values='true' --quote='"' --source_format=CSV TestDataset.cmdLineTest gs://s3_data_transfers/Events_10422/LIVE/* myschema.json

无论如何,我是否可以获得平台来接受这些行?还是我被迫调查预处理步骤?该表将根据发送的新csv每天进行更新,因此理想情况下应尽量减少预处理步骤。

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为此问题是由于您已经指出的--quote参数引起的。由于"是引用CSV数据部分的默认值,因此如果您的数据包含",则它是不一致的。我一直在测试一些类似的数据(使用\"),并且BigQuery返回相同的错误:

Error: Data between close double quote (") and field separator.

解决方案是将--quote标志指定给另一个字符(通过这种方式,可以解决不一致性)。就我而言,它与'一起使用。以下命令对我有用:

bq --location=US load --autodetect --source_format=CSV --quote "'" MY_DATASET.MY_TABLE MY_CSV_FILE

请确保您的数据不包含',否则,您应为此找到另一个字符或将其设置为空字符串作为文档说明。有关此标志的详细信息,请参见this document