将多个文件从 Cloud Storage 导入 BigQuery 的命令

问题描述 投票:0回答:1

我发现这个命令列出了所有文件的路径:

gsutil ls "gs://bucket/foldername/*.csv"

此命令将文件导入 BQ 并自动检测架构:

bq load --autodetect --source_format=CSV dataset.tableName gs://bucket/foldername/something.csv

现在我需要让它协同工作,将所有文件导入到 BQ 中的相应表中。如果表存在,则替换它。你能帮我一下吗?

regex google-cloud-platform google-bigquery gcloud gsutil
1个回答
0
投票

首先,创建一个包含所有列表的文件,其中包含要加载到 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 源文件的名称中提取所需的数据集/表名称吗?从你的问题中我不清楚,请澄清。

© www.soinside.com 2019 - 2024. All rights reserved.