我发现这个命令列出了所有文件的路径:
gsutil ls "gs://bucket/foldername/*.csv"
此命令将文件导入 BQ 并自动检测架构:
bq load --autodetect --source_format=CSV dataset.tableName gs://bucket/foldername/something.csv
现在我需要让它协同工作,将所有文件导入到 BQ 中的相应表中。如果表存在,则替换它。你能帮我一下吗?
首先,创建一个包含所有列表的文件,其中包含要加载到 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 源文件的名称中提取所需的数据集/表名称吗?从你的问题中我不清楚,请澄清。