我在BigQuery中有10个数据集,每个数据集有80个表。我知道我可以使用控制台或Web UI将每个数据集中的每个表一个一个地导出到谷歌存储。这是为了备份目的。但是,这需要一段时间。
我想知道是否有更方便的方法来处理这个问题?
答案 0 :(得分:4)
您可以使用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"
PS:
bq
命令行工具并且它位于您的环境中。它附带google cloud SDK
。要验证您是否可以运行bq help