bq load命令行--preserve_ascii_control_characters参数报错排查
问题原因
--preserve_ascii_control_characters不是bq命令行工具的顶层可识别flag,它是BigQuery CSV加载作业的专属作业配置项,直接作为bq load的全局参数传入时,CLI的flag解析逻辑无法匹配到对应定义,就会抛出「Unknown command line flag」的报错。- 本地安装的Google Cloud SDK版本过低也可能触发该问题:低于370.0.0版本的bq组件没有将该加载配置映射为顶层命令参数,即便参数位置调整正确也无法识别。
解决方法
- 最稳妥、全版本兼容的方案是通过
--properties参数透传作业配置,不要直接将该配置作为顶层flag传入。--properties会直接把配置传递给BigQuery后端作业接口,不会经过本地CLI的flag校验,正确的命令写法如下:
bq load \ --source_format=CSV \ --properties="load.preserveAsciiControlCharacters:true" \ <目标项目:数据集.表名> \ <源CSV数据的本地路径/GCS路径> \ <表结构定义,开启自动检测时可省略>
- 如果需要使用直接传flag的写法,先执行
gcloud components update将本地Cloud SDK升级到最新版本,升级完成后再传入该参数即可被正常识别。
注意:通过
--properties传参时必须使用BigQuery API标准的驼峰字段名preserveAsciiControlCharacters,不要使用下划线分隔的命令行风格命名,否则会出现配置不生效的问题。
内容的提问来源于stack exchange,提问作者Selvalakshmi Praveen
相关产品推荐
相关产品推荐

