我在 BigQuery 中有 10 个数据集,每个数据集有 80 个表。我知道我可以使用控制台或 Web UI 将每个数据集中的每个表逐一导出到 google 存储。这是出于备份目的。然而,这需要一段时间。
我想知道是否有更方便的方法来处理这个问题?
你可以使用bq
命令行工具(https://cloud.google.com/bigquery/bq-command-line-tool https://cloud.google.com/bigquery/bq-command-line-tool)
以下代码将帮助您实现相同的目标:
project="bigquery-project"
dataset="your-dataset"
bucket="your-bucket"
# get list of tables
tables=$(bq ls "$project:$dataset" | awk '{print $1}' | tail +3)
for table in $tables
do
bq extract --destination_format "CSV" --compression "GZIP" "$project:$dataset.$table" "gs://$bucket/$table/$table.csv.gz"
done
此外,如果您想运行命令async
模式将提取命令替换为以下内容
bq --nosync extract --destination_format "CSV" --compression "GZIP" "$project:$dataset.$table" "gs://$bucket/$table/$table.csv.gz"
PS:
- 确保
bq
命令行工具已安装并且位于您的环境中。它配备了google cloud SDK
。验证您可以运行bq help
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)