如何配置Bigquery.LoadJobConfig忽略值内的竖线与引号?
解决BigQuery加载含竖线与引号数据的配置方案
针对你从GCS加载数据到BigQuery时,值内包含竖线(字段分隔符)和引号的问题,只需调整LoadJobConfig的引号相关配置,就能让BigQuery正确识别被引号包裹的字段内容,忽略值内的竖线和引号转义。
关键配置参数说明
quote_character='"':指定双引号为字段包裹符,BigQuery会将引号内的所有内容视为单个字段值,包括其中的竖线。quote_escape_character='"':设置用双引号转义字段内的双引号(符合CSV规范,两个连续双引号表示一个实际的双引号),对应你示例中的"247-"001...格式(注意规范数据应该是"247""001-140-60 | 140-60 ",否则会出现语法错误)。allow_quoted_newlines=True:如果数据中存在换行被包裹在引号内的情况,开启这个参数可避免加载失败(可选,但建议加上)。
修改后的配置代码
if schema: job_config = bigquery.LoadJobConfig( schema=schema, field_delimiter='|', allow_jagged_rows=True, ignore_unknown_values=True, max_bad_records=10, quote_character='"', quote_escape_character='"', allow_quoted_newlines=True ) else: job_config = bigquery.LoadJobConfig( field_delimiter='|', allow_jagged_rows=True, ignore_unknown_values=True, max_bad_records=10, quote_character='"', quote_escape_character='"', allow_quoted_newlines=True )
注意事项
如果你的数据中内部双引号是用反斜杠\转义的,需要把quote_escape_character改成'\\'。另外要确保源数据的引号格式符合规范,否则可能仍会出现加载错误,此时可以适当调大max_bad_records或者检查数据格式。
内容的提问来源于stack exchange,提问作者slashie
相关产品推荐
相关产品推荐

