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

Google bigquery 将10个数据集(每个数据集有80个表)从bigquery导出到google存储的有效方法?,google-bigquery,google-cloud-storage,Google Bigquery,Google Cloud Storage,我在BigQuery中有10个数据集,每个数据集有80个表。我知道我可以使用控制台或Web UI将每个数据集中的每个表逐个导出到google存储。这是出于备份目的。然而,这需要一段时间 我想知道是否有更方便的方法来处理这个问题 您可以使用bq命令行工具() 以下代码将帮助您实现相同的目标: project="bigquery-project" dataset="your-dataset" bucket="your-bucket" # get list of tables tables=$(bq

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


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

您可以使用
bq
命令行工具()

以下代码将帮助您实现相同的目标:

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" 
附言:

  • 确保安装了
    bq
    命令行工具,并且它位于您的环境中。它附带了
    googlecloudsdk
    。要验证是否可以运行
    bq帮助

是否可以使用
bq
模式在命令行中写入多行代码?例如,当我尝试这个
#get list of tables=$(bq ls“$project:$dataset”| awk'{print$1}'| tail+3)
,我收到这个错误
未知语法
只需将上面的脚本保存在一个文件中,比如说,
export_bq.sh
,然后通过运行
bash export_bq.sh
来执行它。如果您只想运行单行,请用实际值替换参数
$project:$dataset
,谢谢您的回答!你是说我把它保存到本地还是云?有什么指南可以解释这一点吗?例如,我找不到谷歌云的任何资源来解释如何使用
bash
运行外部脚本?我是否遗漏了什么,或者没有足够的文档?