将多个文件从 Cloud Storage 导入 BigQuery 的命令
Posted
技术标签:
【中文标题】将多个文件从 Cloud Storage 导入 BigQuery 的命令【英文标题】:Command to import multiple files from Cloud Storage into BigQuery 【发布时间】:2020-07-27 08:32:54 【问题描述】:我发现这个命令列出了所有文件的路径:
gsutil ls "gs://bucket/foldername/*.csv"
此命令将文件导入 BQ 并自动检测架构:
bq load --autodetect --source_format=CSV dataset.tableName gs://bucket/foldername/something.csv
现在我需要让它一起工作,将所有文件导入到 BQ 中的各个表中。如果表存在,则替换它。你能帮我一把吗?
【问题讨论】:
AFAIK 要加载到多个表,您需要更多的脚本。如果我希望所有文件都放在同一个表中,我会使用*
。
不,仅此而已。需要 sed 或 xargs 或其他东西来按顺序执行。没有那么多桌子
尝试将该信息添加到问题中 - 或发布一个新的说明您想要什么样的脚本
【参考方案1】:
首先,创建一个包含所有要加载到 BigQuery 中的文件夹的列表的文件:
gsutil ls "gs://bucket/foldername/*.csv" > allmynicetables.txt
然后,创建一个简单的循环,对 allmynicetables.txt 中列出的每个 csv 文件重复加载操作:
while read p ; do bq load --autodetect --replace=true --source_format=CSV dataset.tableName $p ; done < allmynicetables.txt
只是一些澄清:
--replace=true
可以覆盖现有表。
另外,我不知道你为什么放dataset.tableName
,你总是复制到同一个数据集吗?您可以从 .csv 源文件的名称中提取所需的数据集/表名称吗?从您的问题中我不清楚这一点,请澄清。
【讨论】:
以上是关于将多个文件从 Cloud Storage 导入 BigQuery 的命令的主要内容,如果未能解决你的问题,请参考以下文章
从 Cloud Function (python) 写入 Google Cloud Storage
如何将多个(不同)文件上传到 Cloud Storage Firebase?
从 Google Cloud Storage 复制时排除特定文件或目录
通过 Python 客户端库将多个文件上传到 Google Cloud Storage