能否使用bq load函数加载以|为分隔符的.txt文件至BigQuery表
核心结论
完全可以使用现有bq load能力加载以|为分隔符的.txt文件,无需更换工具,仅需在你已有的CSV加载命令基础上补充少量参数即可完成适配。
参数调整说明
对比你当前使用的CSV加载命令,不需要推翻原有配置,仅需新增自定义分隔符相关参数,其余已配置项均可直接复用:
- 必须新增的核心参数:
--field_delimiter="|",作用是指定加载时使用竖线而非默认的逗号拆分每行字段 - 可直接保留的原有配置:
- 区域参数
--location=australia-southeast1:需与BigQuery数据集、GCS存储桶的所在区域保持一致 --allow_jagged_rows:兼容行列数不匹配的边缘场景,对竖线分隔文件的适配逻辑与CSV完全一致--skip_leading_rows=1:用于跳过文件首行的表头内容,与文件的分隔符类型、文件后缀无关--source_format=CSV:该格式本身原生支持自定义字段分隔符,不需要因为文件是.txt后缀、使用竖线分隔就切换源格式类型
- 区域参数
改造后的可直接落地的命令示例
bq --location=australia-southeast1 load --allow_jagged_rows --skip_leading_rows=1 --source_format=CSV --field_delimiter="|" dataset.TABLE1 gs://load_files/Test/File.txt
实操注意事项
- 如果.txt文件内的字段值本身包含
|字符,需要提前对这类特殊字符做转义,或配合添加--quote参数指定文本包裹使用的引号字符,避免字段被错误拆分 - 若目标txt文件无表头行,需要移除
--skip_leading_rows=1参数,否则会跳过第一行有效数据 - 如果加载时出现字段类型不匹配的报错,可以在命令末尾补充表结构定义文件的GCS路径,或直接内联写好字段schema即可,流程与加载CSV文件完全一致
内容的提问来源于stack exchange,提问作者Sin
相关产品推荐
相关产品推荐

