Google bigquery 在导入到BigQuery时指定转义字符&引用;错误:关闭双引号(";)和字段分隔符之间的数据;

Google bigquery 在导入到BigQuery时指定转义字符&引用;错误:关闭双引号(";)和字段分隔符之间的数据;,google-bigquery,Google Bigquery,我正在尝试将大量.csv文件导入Google BigQuery 我的一个字符串列有时包含一个数组,该数组包含用\转义的双引号。例如: …,“{\“ex1\”:“somestufghere\”,“ex2\”:“somestufghere\”,“ex3\:“somestufghere\”, 我相信这个问题是由于默认情况下BigQuery希望用另一个双引号转义双引号-“”。我尝试过向--quote参数发送不同的参数,但它并没有像我希望的那样工作 我正在尝试的当前命令行加载命令: bq load--no

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

我的一个字符串列有时包含一个数组,该数组包含用
\
转义的双引号。例如:

,“{\“ex1\”:“somestufghere\”,“ex2\”:“somestufghere\”,“ex3\:“somestufghere\”,

我相信这个问题是由于默认情况下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\u transfers/Events\u 10422/LIVE/*myschema.json

我是否可以让平台接受这些行?或者我是否被迫调查预处理步骤?此表将根据发送的新csv每天更新,因此理想情况下尽量将预处理步骤保持在最低限度


谢谢!

我认为这个问题是由于您已经指出的
--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

确保您的数据不包含
,否则您应该为该数据找到另一个字符,或者将其设置为空字符串作为文档状态。有关此标志的详细信息,请参阅。

这将起作用,但因为我的许多列确实包含由
这意味着它们只能作为字符串处理。可悲的是,这会破坏分区和其他功能,这些功能在时间戳列之类的大量数据上是必需的。示例错误:
从位置4901开始-查询:无法将“\”2018-11-22 00:00:00.0\”解析为时间戳。所需格式为YYYY-MM-DD HH:MM[:SS[.ssss]];无法将“2018-11-22 00:00:00.0”解析为字段eventDate的日期时间(位置
…我一直在用它进行测试。
\“2018-11-22 00:00:00.0”如果使用
--autodetect
,则
将被检测为
字符串
,如果提供架构,则会引发错误。我认为您应该预处理数据或将其作为
字符串
导入BigQuery,然后删除
\“
并将其转换为正确的数据类型。啊,```只在命令行输出中,它们实际上不在我的数据中(对于日期问题,它们是针对原始问题中的数组).Autodetect无法处理我的数据,因为数组中也有逗号。我认为我的选择是预处理,或者将整个数据集作为1列字符串导入,然后从中进行处理。感谢您的帮助!我从未找到解决方案。我最终将整个数据集作为s单列字符串表导入,然后进行处理从那里使用正则表达式。