Memulihkan snapshot tabel

Dokumen ini menjelaskan cara membuat tabel yang dapat ditulisi dari snapshot tabel menggunakan Konsol Google Cloud, kueri CREATE TABLE CLONE, perintah bq cp, atau jobs.insert API. Fitur ini ditujukan bagi pengguna yang sudah memahami snapshot tabel.

Izin dan peran

Bagian ini menjelaskan Izin Identity and Access Management (IAM) bahwa Anda perlu membuat tabel yang dapat ditulisi dari snapshot tabel, danperan IAM yang telah ditetapkan yang memberikan izin akses tersebut.

Izin

Untuk membuat tabel yang dapat ditulisi dari snapshot tabel, Anda memerlukan izin berikut:

Izin Resource
Semua dari berikut ini:

bigquery.tables.get
bigquery.tables.getData
bigquery.tables.restoreSnapshot
Snapshot tabel yang ingin Anda salin ke tabel yang dapat ditulisi.
bigquery.tables.create Set data yang berisi tabel tujuan.

Peran

Peran BigQuery yang telah ditetapkan dan menyediakan izin yang diperlukan adalah sebagai berikut:

Role Resource
Salah satu dari yang berikut ini:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Snapshot tabel yang ingin Anda salin ke tabel yang dapat ditulisi.
Salah satu dari yang berikut ini:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Set data yang berisi tabel tujuan.

Memulihkan snapshot tabel

Untuk membuat tabel yang dapat ditulisi dari snapshot, tentukan snapshot tabel yang ingin disalin dan tabel tujuan. Tabel tujuan dapat berupa tabel baru atau Anda dapat menimpa tabel yang ada dengan snapshot tabel.

Memulihkan ke tabel baru

Anda dapat memulihkan snapshot tabel menjadi tabel baru menggunakan salah satu opsi berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, luaskan node project dan set data dari snapshot tabel yang ingin Anda pulihkan.

  3. Klik nama snapshot tabel.

  4. Di panel snapshot tabel yang muncul, klik Pulihkan.

    Pulihkan tabel dari snapshot

  5. Di panel Pulihkan snapshot yang muncul, masukkan informasi Project, Set Data, dan Table untuk tabel baru.

  6. Klik Simpan.

SQL

Gunakan pernyataan DDL CREATE TABLE CLONE:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.NEW_TABLE_NAME
    CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;
    

    Ganti kode berikut:

    • TABLE_PROJECT_ID: project ID dari project sebagai tempat membuat tabel baru.
    • TABLE_DATASET_NAME: nama set data sebagai tempat membuat tabel baru.
    • NEW_TABLE_NAME: nama tabel baru.
    • SNAPSHOT_PROJECT_ID: project ID untuk project yang berisi snapshot yang Anda pulihkan.
    • SNAPSHOT_DATASET_NAME: nama set data yang berisi snapshot yang Anda pulihkan.
    • SNAPSHOT_NAME: nama snapshot tempat Anda memulihkan data.

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

bq

Masukkan perintah berikut di Cloud Shell:

Buka Cloud Shell

bq cp \
--restore \
--no_clobber \
SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \
TABLE_PROJECT_ID:TABLE_DATASET_NAME.NEW_TABLE_NAME

Ganti kode berikut:

  • SNAPSHOT_PROJECT_ID: project ID untuk project yang berisi snapshot yang Anda pulihkan.
  • SNAPSHOT_DATASET_NAME: nama set data yang berisi snapshot yang Anda pulihkan.
  • SNAPSHOT_NAME: nama snapshot tempat Anda memulihkan data.
  • TABLE_PROJECT_ID: project ID dari project sebagai tempat membuat tabel baru.
  • TABLE_DATASET_NAME: nama set data sebagai tempat membuat tabel baru.
  • NEW_TABLE_NAME: nama tabel baru.

Flag --no_clobber menginstruksikan perintah untuk gagal jika tabel tujuan sebelumnya sudah ada.

API

Panggil metode jobs.insert dengan parameter berikut:

Parameter Nilai
projectId ID project dari project yang akan ditagih untuk operasi ini.
Isi permintaan

{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "SNAPSHOT_PROJECT_ID",
          "datasetId": "SNAPSHOT_DATASET_NAME",
          "tableId": "SNAPSHOT_NAME"
        }
      ],
      "destinationTable": {
        "projectId": "TABLE_PROJECT_ID",
        "datasetId": "TABLE_DATASET_NAME",
        "tableId": "NEW_TABLE_NAME"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_EMPTY"
    }
  }
}

Ganti kode berikut:

  • SNAPSHOT_PROJECT_ID: project ID untuk project yang berisi snapshot yang Anda pulihkan.
  • SNAPSHOT_DATASET_NAME: nama set data yang berisi snapshot yang Anda pulihkan.
  • SNAPSHOT_NAME: nama snapshot tempat Anda memulihkan data.
  • TABLE_PROJECT_ID: project ID dari project sebagai tempat membuat tabel baru.
  • TABLE_DATASET_NAME: nama set data sebagai tempat membuat tabel baru.
  • NEW_TABLE_NAME: nama tabel baru.

Jika masa berlaku tidak ditentukan, tabel tujuan akan berakhir setelah waktu habis masa berlaku tabel default untuk set data yang berisi tabel tujuan.

Menimpa tabel yang ada sebelumnya

Anda dapat menimpa tabel yang ada dengan snapshot tabel menggunakan salah satu opsi berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, luaskan node project dan set data dari snapshot tabel yang ingin Anda pulihkan.

  3. Klik nama snapshot tabel.

  4. Di panel snapshot tabel yang muncul, klik Pulihkan.

    Pulihkan tabel dari snapshot

  5. Di panel Restore snapshot yang muncul, masukkan informasi Project, Dataset, dan Table untuk tabel yang sudah ada.

  6. Pilih Timpa tabel jika ada.

  7. Klik Simpan.

SQL

Gunakan pernyataan DDL CREATE TABLE CLONE:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE OR REPLACE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME
    CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;
    

    Ganti kode berikut:

    • TABLE_PROJECT_ID: project ID dari project sebagai tempat membuat tabel baru.
    • TABLE_DATASET_NAME: nama set data yang berisi tabel yang Anda timpa.
    • TABLE_NAME: nama tabel yang Anda timpa.
    • SNAPSHOT_PROJECT_ID: project ID untuk project yang berisi snapshot yang Anda pulihkan.
    • SNAPSHOT_DATASET_NAME: nama set data yang berisi snapshot yang Anda pulihkan.
    • SNAPSHOT_NAME: nama snapshot tempat Anda memulihkan data.

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

bq

Masukkan perintah berikut di Cloud Shell:

Buka Cloud Shell

bq cp \
--restore \
--force \
SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \
TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME

Ganti kode berikut:

  • SNAPSHOT_PROJECT_ID: project ID untuk project yang berisi snapshot yang Anda pulihkan.
  • SNAPSHOT_DATASET_NAME: nama set data yang berisi snapshot yang Anda pulihkan.
  • SNAPSHOT_NAME: nama snapshot tempat Anda memulihkan data.
  • TABLE_PROJECT_ID: project ID dari project sebagai tempat membuat tabel baru.
  • TABLE_DATASET_NAME: nama set data yang berisi tabel yang Anda timpa.
  • TABLE_NAME: nama tabel yang Anda timpa.

API

Panggil metode jobs.insert dengan parameter berikut:

Parameter Nilai
projectId ID project dari project yang akan ditagih untuk operasi ini.
Isi permintaan

{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "SNAPSHOT_PROJECT_ID",
          "datasetId": "SNAPSHOT_DATASET_NAME",
          "tableId": "SNAPSHOT_NAME"
        }
      ],
      "destinationTable": {
        "projectId": "TABLE_PROJECT_ID",
        "datasetId": "TABLE_DATASET_NAME",
        "tableId": "TABLE_NAME"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_TRUNCATE"
    }
  }
}

Ganti kode berikut:

  • SNAPSHOT_PROJECT_ID: project ID untuk project yang berisi snapshot yang Anda pulihkan.
  • SNAPSHOT_DATASET_NAME: nama set data yang berisi snapshot yang Anda pulihkan.
  • SNAPSHOT_NAME: nama snapshot tempat Anda memulihkan data.
  • TABLE_PROJECT_ID: project ID dari project sebagai tempat membuat tabel baru.
  • TABLE_DATASET_NAME: nama set data yang berisi tabel yang Anda timpa.
  • TABLE_NAME: nama tabel yang Anda timpa.

Jika masa berlaku tidak ditentukan, tabel tujuan akan berakhir setelah waktu habis masa berlaku tabel default untuk set data yang berisi tabel tujuan.

Langkah selanjutnya