我正在尝试将大量.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每天进行更新,因此理想情况下应尽量减少预处理步骤。
谢谢!
答案 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。