我在 BigQuery 中有 10 个数据集,每个数据集有 80 个表。我知道我可以使用控制台或 Web UI 将每个数据集中的每个表逐个导出到 google 存储。这是出于备份目的。但是,这需要一段时间。
我想知道是否有更方便的方法来解决这个问题?
您可以使用
bq
命令行工具(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"
附注:
- 确保已安装
bq
命令行工具,并且它位于您的环境中。它带有google cloud SDK
。验证是否可以运行bq help