get*_*ity 4 backup views google-bigquery
我正在使用bigquery,并且已经创建了数百个视图。其中大多数未使用,应删除。但是,有可能会使用其中一些,而我不能盲目删除所有内容。因此,我需要以某种方式备份所有视图定义,然后再删除它们。
有人知道一个好方法吗?我不是要保存数据,而只是保存视图定义查询及其名称。
谢谢阅读!
第1部分。
发出bq ls
命令。该--format
标志可用于控制输出。如果要在默认项目以外的项目中列出视图,请以以下格式将项目ID添加到数据集中:[PROJECT_ID]:[DATASET]
。
bq ls --format=pretty [PROJECT_ID]:[DATASET]
Run Code Online (Sandbox Code Playgroud)
哪里:
[PROJECT_ID]
是您的项目ID。
[DATASET]
是数据集的名称。
运行命令时,“类型”字段显示TABLE
或VIEW
。例如:
+-------------------------+-------+----------------------+-------------------+
| tableId | Type | Labels | Time Partitioning |
+-------------------------+-------+----------------------+-------------------+
| mytable | TABLE | department:shipping | |
| myview | VIEW | | |
+-------------------------+-------+----------------------+-------------------+
Run Code Online (Sandbox Code Playgroud)
第2部分。
发出bq show
命令。该--format
标志可用于控制输出。如果要获取有关默认项目以外的项目中的视图的信息,请以以下格式将项目ID添加到数据集中:[PROJECT_ID]:[DATASET]
。要将视图属性写入文件,请添加> [PATH_TO_FILE]
到命令。
bq show --format=prettyjson [PROJECT_ID]:[DATASET].[VIEW] > [PATH_TO_FILE]
Run Code Online (Sandbox Code Playgroud)
哪里:
[PROJECT_ID]
是您的项目ID。
[DATASET]
是数据集的名称。
[VIEW]
是视图的名称。
[PATH_TO_FILE]
是本地计算机上输出文件的路径。
例子:
输入以下命令以在mydataset中显示有关myview的信息。mydataset在您的默认项目中。
bq show --format=prettyjson mydataset.myview
Run Code Online (Sandbox Code Playgroud)
输入以下命令以显示有关myview
中的信息mydataset
。mydataset在myotherproject中,而不是您的默认项目中。视图属性将写入本地文件— /tmp/myview.json
。
bq show --format=prettyjson myotherproject:mydataset.myview > /tmp/myview.json
Run Code Online (Sandbox Code Playgroud)
小智 5
基于现有答案,您可以通过解析with 的输出来自动备份所有视图:bq
jq
#!/bin/bash
DATASETS=$(bq ls --format=sparse | tail -n+3)
for d in $DATASETS; do
TABLES=$(bq ls --format=prettyjson "$d" | jq '.[] | "\(.id), \(.type)"')
IFS=$'\n'
for table in $TABLES; do
[[ ! "$table" == *VIEW* ]] && continue
view=$(echo "$table" | sed -e 's/"//g' | cut -d , -f 1)
query=$(bq show --format=prettyjson "$view" | jq -r '.view.query')
echo -e "$query" > "$view.sql"
done
done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
651 次 |
最近记录: |