BQ命令行工具 - 如何在创建BigQuery数据集之前检查它是否存在?

时间:2018-05-22 17:36:37

标签: google-bigquery

使用BigQuery命令行工具,如何在创建数据集之前检查数据集是否存在?

bq mk dataset
如果您尝试在现有数据集上调用它,

会报告错误。

3 个答案:

答案 0 :(得分:3)

列出项目中的所有数据集,并使用grep -w检查所需的数据集是否已存在。仅在数据集尚不存在时才发出“bq mk”:

#!/bin/bash
bq_safe_mk() {
    dataset=$1
    exists=$(bq ls -d | grep -w $dataset)
    if [ -n "$exists" ]; then
       echo "Not creating $dataset since it already exists"
    else
       echo "Creating $dataset"
       bq mk $dataset
    fi
}

# this is how you call the function
bq_safe_mk someowenwoiertw

答案 1 :(得分:3)

一个简短的解决方案:

bq show $dataset || bq mk $dataset

答案 2 :(得分:0)

对@Lak 的回答稍作修改以在安全的 bash 环境中工作

#!/bin/bash
# safer bash: check for errors and unset variables
set -Eeuo pipefail

bq_safe_mk() {
    dataset=$1
    exists=$(bq ls -d | { grep -w $dataset || :; })
    if [ -n "$exists" ]; then
       echo "Not creating $dataset since it already exists"
    else
       echo "Creating $dataset"
       bq mk $dataset
    fi
}

bq_safe_mk adatasetname