一种将 10 个数据集(每个数据集有 80 个表)从 bigquery 导出到 google 存储的有效方法



我在 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

最新更新