如何递归遍历GCS文件夹批量加载CSV文件至BigQuery实现自动化
GCS分层目录CSV批量加载至BigQuery实现方案
单命令批量加载方案
BigQuery 原生支持 GCS 路径通配匹配,无需逐文件枚举路径,单条命令即可完成全目录下目标CSV的加载:
- 路径匹配逻辑:针对你现有
gs://mybucket/{year}/{month}/{day}/xxx.csv的固定三层子目录结构,使用gs://mybucket/*/*/*/*.csv作为源路径即可精准匹配所有年、月、日目录下的CSV文件,不会误加载非业务目录下的同名文件 - 可直接复用的命令模板:
bq load --autodetect --source_format=CSV --write_disposition=WRITE_APPEND 你的项目ID:你的数据集名.你的目标表名 gs://mybucket/*/*/*/*.csv
- 配置说明:
- 你现有CSV统一schema的前提下,加
--autodetect参数即可自动识别字段结构,无需手动编写schema映射 - 追加写模式对应
WRITE_APPEND,如果是定期全量覆盖目标表的场景,可把参数换成WRITE_TRUNCATE - 如果不需要每次都加载全量历史文件,可把通配的年/月/日部分替换成对应周期的匹配规则,比如只匹配过去一周的目录,减少无效数据扫描
- 你现有CSV统一schema的前提下,加
长期零人工自动化方案
如果不想每周手动执行命令,可通过云原生组件实现全流程无人值守,无需维护自建服务器:
- 最简配置路径:直接用BigQuery自带的定时查询功能,每周固定时间执行
LOAD DATA语句,引用和上面一致的通配GCS路径即可,连额外的函数代码都不需要部署 - 灵活配置路径:如果需要在加载前后加额外逻辑(比如校验文件完整性、加载完成后触发数据清洗、加载异常时发告警),可搭配Cloud Scheduler定时触发Cloud Function,在函数内调用BigQuery的批量加载接口,传入相同的通配路径完成操作
内容的提问来源于stack exchange,提问作者kuri_neon
相关产品推荐
相关产品推荐

