Ccmmutty logo
Commutty IT
0 pv2 min read

BigQuery の INFORMATION_SCHEMA をから DDL 取得し、既存テーブルと同じスキーマの新しいテーブルを作る

https://cdn.magicode.io/media/notebox/blob_HRmmaGA

Bigquery の INFORMATION_SCHEMA をから DDL 取得し、既存テーブルと同じスキーマの新しいテーブルを作る

INFORMATION_SCHEMA.TABLES から DDL が取得し、同じスキーマのテーブルを作成する方法のメモです。

Summary

以下の SQL で INFORMATION_SCHEMA.TABLES 内の DDL を検索する。
SELECT 
    DDL, *
FROM
    <dataset>.INFORMATION_SCHEMA.TABLES

前提

以下のテーブルと同じスキーマの新しいテーブルを作成したいとします。
  • dataset: foo
  • table: bar
    • column: baz, qux, quux
    • 日付分割テーブル
また、BQ のコンソール上で実施するとします。

1. DDL を取得する

以下の SQL を実行します。
SELECT 
    DDL
FROM
    foo.INFORMATION_SCHEMA.TABLES
WHERE
    table_name = 'bar'
実行結果
CREATE TABLE `<my_project>.foo.bar`
(
  baz STRING,
  qux STRING,
  quux STRING
)
PARTITION BY DATE(_PARTITIONTIME);

2. 取得した DDL を使って新しいテーブルを作成する

取得した DDL をコピーし、コンソール上に貼り付け、適宜修正します。 この例では、同じ dataset: foo に bar2 と言う table を作成します。
CREATE TABLE `<my_project>.foo.bar2`
(
  baz STRING,
  qux STRING,
  quux STRING
)
PARTITION BY DATE(_PARTITIONTIME);
実行結果
このステートメントで新しいテーブル <my_project>:foo.bar2 が作成されました。
以上で、同じスキーマのテーブルを作成することができました。
BQ のコンソール上でサクッとできるのは地味に便利ですね。

Discussion

コメントにはログインが必要です。