从bigquery到google存储导出1​​0个数据集(每个有80个表)的有效方法?

时间:2017-03-21 11:56:22

标签: google-bigquery google-cloud-storage

我在BigQuery中有10个数据集,每个数据集有80个表。我知道我可以使用控制台或Web UI将每个数据集中的每个表一个一个地导出到谷歌存储。这是为了备份目的。但是,这需要一段时间。

我想知道是否有更方便的方法来处理这个问题?

1 个答案:

答案 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模式下运行命令,请使用以下

替换extract命令
    bq --nosync extract --destination_format "CSV" --compression "GZIP" "$project:$dataset.$table" "gs://$bucket/$table/$table.csv.gz" 

PS:

  • 确保已安装bq命令行工具并且它位于您的环境中。它附带google cloud SDK。要验证您是否可以运行bq help