GCP BigQuery bq工具加载竖线分隔文件:引号内分隔符引发报错
问题解决:BigQuery加载竖线分隔带引号字段报错“行中值过多”
错误原因
你当前的bq load命令中,--quote ""参数是核心问题——这个设置等于告诉BigQuery不使用任何引号字符,所以它会把字段内部的竖线|也当作列分隔符,将"New dept|location|name"拆成了3个独立字段,最终一行被识别出5列,和表定义的3列不符,触发报错。
正确命令
需要将--quote参数设置为双引号(注意shell环境下的转义处理),修改后的命令如下:
bq load --replace --skip_leading_rows=1 --allow_jagged_rows=true --source_format=CSV --field_delimiter="|" --preserve_ascii_control_characters=true --allow_quoted_newlines=true --quote "\"" mydataset.ticket_details gs://test_bucket/Tickets*.txt
或者用单引号包裹双引号,避免转义:
bq load --replace --skip_leading_rows=1 --allow_jagged_rows=true --source_format=CSV --field_delimiter="|" --preserve_ascii_control_characters=true --allow_quoted_newlines=true --quote '"' mydataset.ticket_details gs://test_bucket/Tickets*.txt
验证逻辑
修正后,BigQuery会识别双引号作为字段的包裹符,将"New dept|location|name"视为一个完整的字段,不再拆分内部的竖线,整行将被正确解析为3列,匹配表结构。
内容的提问来源于stack exchange,提问作者msk
相关产品推荐
相关产品推荐

