LoginSignup
7
1

More than 3 years have passed since last update.

【BigQuery】既存のテーブルスキーマを新しいテーブルにインポートする

Posted at

使い所

  • 既存のテーブルに変更を加えたいとき
  • テーブルのリージョンを変更したいとき

BigQueryは既存のテーブル名の変更やスキーマの変更はできず、新しくテーブルを作り直す必要がある。
その際にカラム数の多いテーブルだと手作業で1つずつスキーマを移すのが苦行なので、既存のテーブルのスキーマをエクスポートし、新しいテーブルにインポートする。

前提

  • Google Cloud SDKのインストール・ログインが済んでいること。

手順

【export】 bqコマンドで既存のテーブルのスキーマを表示する

コンソールで以下のコマンドを実行する。(${}変数は自分のエクスポートしたいテーブルに置き換えること)
テーブル情報が表示されるので、"schema"キー以下の"fields"の始めから終わりをコピーする。

❯ bq --format=prettyjson show ${project_id}:${dataset_name}.${table_name}

{
  "creationTime": "XXXXXXXXXXXXX",
  "etag": "XXXXXXXXXXXXXX",
  "id": "${project_id}:${dataset_name}.${table_name}",
 ︙
  "schema": {
    "fields": [
      {
        "mode": "NULLABLE",
        "name": "hoge",
        "type": "INTEGER"
      },
      {
        "mode": "NULLABLE",
        "name": "fuga",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "piyo",
        "type": "BOOLEAN"
      }
   ]
}
︙
期待するクリップボードの中身
[
  {
    "mode": "NULLABLE",
    "name": "hoge",
    "type": "INTEGER"
  },
  {
    "mode": "NULLABLE",
    "name": "fuga",
    "type": "STRING"
  },
  {
    "mode": "NULLABLE",
    "name": "piyo",
    "type": "BOOLEAN"
  }
]

【import】 Webコンソールからテーブル作成

  • クエリエディタ画面を開いて、テーブルを作りたいデータセットを選択→『テーブルを作成』をクリック
  • 『テキストとして編集』を有効にし、クリップボードに用意したJSONを貼り付ける スクリーンショット 2020-11-02 17.36.36.png
7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1