Restaurer des instantanés de table

Ce document explique comment créer une table en écriture à partir d'un instantané de table à l'aide de la console Google Cloud, d'une requête CREATE TABLE CLONE, d'une commande bq cp ou de l'API jobs.insert. Il est destiné aux utilisateurs familiarisés avec les instantanés de table BigQuery.

Autorisations et rôles

Cette section décrit les autorisations Identity and Access Management (IAM) dont vous avez besoin pour créer une table en écriture à partir d'un instantané de table et les rôles IAM prédéfinis qui accordent ces autorisations.

Autorisations

Pour créer une table en écriture à partir d'un instantané de table, vous devez disposer des autorisations suivantes :

Autorisation Ressource
Tous les éléments suivants :

bigquery.tables.get
bigquery.tables.getData
bigquery.tables.restoreSnapshot
Instantané de la table que vous souhaitez copier dans une table en écriture
bigquery.tables.create Ensemble de données contenant la table de destination

Rôles

Voici les rôles BigQuery prédéfinis qui fournissent les autorisations requises :

Rôle Ressource
Au choix :

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Instantané de la table que vous souhaitez copier dans une table en écriture
Au choix :

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Ensemble de données contenant la table de destination

Restaurer un instantané de table

Pour créer une table en écriture à partir d'un instantané, spécifiez l'instantané de table que vous souhaitez copier et la table de destination. La table de destination peut être une nouvelle table, ou vous pouvez écraser une table existante avec l'instantané de table.

Restaurer dans une nouvelle table

Vous pouvez restaurer un instantané de table dans une nouvelle table à l'aide de l'une des options suivantes :

Console

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet Explorateur, développez les nœuds de projet et d'ensemble de données de l'instantané de table à partir duquel vous souhaitez effectuer la restauration.

  3. Cliquez sur le nom de l'instantané de table.

  4. Dans le volet de l'instantané de table qui s'affiche, cliquez sur Restaurer.

    Restaurer la table à partir d'un instantané

  5. Dans le volet Restaurer l'instantané qui s'affiche, saisissez les informations Projet, Ensemble de données et Table pour la nouvelle table.

  6. Cliquez sur Enregistrer.

SQL

Utilisez l'instruction LDD CREATE TABLE CLONE :

  1. Dans Google Cloud Console, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, saisissez l'instruction suivante :

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

    Remplacez les éléments suivants :

    • TABLE_PROJECT_ID : ID du projet dans lequel créer la nouvelle table.
    • TABLE_DATASET_NAME : nom de l'ensemble de données dans lequel créer la table.
    • NEW_TABLE_NAME : nom de la nouvelle table.
    • SNAPSHOT_PROJECT_ID : ID du projet contenant l'instantané à partir duquel vous effectuez la restauration.
    • SNAPSHOT_DATASET_NAME : nom de l'ensemble de données contenant l'instantané à partir duquel vous effectuez la restauration.
    • SNAPSHOT_NAME : nom de l'instantané à partir duquel vous effectuez la restauration.

  3. Cliquez sur Exécuter.

Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.

bq

Saisissez la commande suivante dans Cloud Shell :

Accéder à Cloud Shell

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

Remplacez les éléments suivants :

  • SNAPSHOT_PROJECT_ID : ID du projet contenant l'instantané à partir duquel vous effectuez la restauration.
  • SNAPSHOT_DATASET_NAME : nom de l'ensemble de données contenant l'instantané à partir duquel vous effectuez la restauration.
  • SNAPSHOT_NAME : nom de l'instantané à partir duquel vous effectuez la restauration.
  • TABLE_PROJECT_ID : ID du projet dans lequel créer la nouvelle table.
  • TABLE_DATASET_NAME : nom de l'ensemble de données dans lequel créer la table.
  • NEW_TABLE_NAME : nom de la nouvelle table.

L'option --no_clobber indique à la commande d'échouer si la table de destination existe déjà.

API

Appelez la méthode jobs.insert avec les paramètres suivants :

Paramètre Valeur
projectId ID du projet à facturer pour cette opération.
Corps de la requête
{
  "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"
    }
  }
}

Remplacez les éléments suivants :

  • SNAPSHOT_PROJECT_ID : ID du projet contenant l'instantané à partir duquel vous effectuez la restauration.
  • SNAPSHOT_DATASET_NAME : nom de l'ensemble de données contenant l'instantané à partir duquel vous effectuez la restauration.
  • SNAPSHOT_NAME : nom de l'instantané à partir duquel vous effectuez la restauration.
  • TABLE_PROJECT_ID : ID du projet dans lequel créer la nouvelle table.
  • TABLE_DATASET_NAME : nom de l'ensemble de données dans lequel créer la table.
  • NEW_TABLE_NAME : nom de la nouvelle table.

Si aucun délai d'expiration n'est spécifié, la table de destination expire après l'expiration du délai par défaut de la table pour l'ensemble de données contenant la table de destination.

Écraser une table existante

Vous pouvez écraser une table existante avec un instantané de table à l'aide de l'une des options suivantes :

Console

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet Explorateur, développez les nœuds de projet et d'ensemble de données de l'instantané de table à partir duquel vous souhaitez effectuer la restauration.

  3. Cliquez sur le nom de l'instantané de table.

  4. Dans le volet de l'instantané de table qui s'affiche, cliquez sur Restaurer.

    Restaurer la table à partir d'un instantané

  5. Dans le volet Restaurer l'instantané qui s'affiche, saisissez les informations Projet, Ensemble de données et Table pour la table existante.

  6. Sélectionnez Écraser la table si elle existe.

  7. Cliquez sur Enregistrer.

SQL

Utilisez l'instruction LDD CREATE TABLE CLONE :

  1. Dans Google Cloud Console, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, saisissez l'instruction suivante :

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

    Remplacez les éléments suivants :

    • TABLE_PROJECT_ID : ID du projet dans lequel créer la nouvelle table.
    • TABLE_DATASET_NAME : nom de l'ensemble de données contenant la table que vous écrasez.
    • TABLE_NAME : nom de la table que vous écrasez.
    • SNAPSHOT_PROJECT_ID : ID du projet contenant l'instantané à partir duquel vous effectuez la restauration.
    • SNAPSHOT_DATASET_NAME : nom de l'ensemble de données contenant l'instantané à partir duquel vous effectuez la restauration.
    • SNAPSHOT_NAME : nom de l'instantané à partir duquel vous effectuez la restauration.

  3. Cliquez sur Exécuter.

Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.

bq

Saisissez la commande suivante dans Cloud Shell :

Accéder à Cloud Shell

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

Remplacez les éléments suivants :

  • SNAPSHOT_PROJECT_ID : ID du projet contenant l'instantané à partir duquel vous effectuez la restauration.
  • SNAPSHOT_DATASET_NAME : nom de l'ensemble de données contenant l'instantané à partir duquel vous effectuez la restauration.
  • SNAPSHOT_NAME : nom de l'instantané à partir duquel vous effectuez la restauration.
  • TABLE_PROJECT_ID : ID du projet dans lequel créer la nouvelle table.
  • TABLE_DATASET_NAME : nom de l'ensemble de données contenant la table que vous écrasez.
  • TABLE_NAME : nom de la table que vous écrasez.

API

Appelez la méthode jobs.insert avec les paramètres suivants :

Paramètre Valeur
projectId ID du projet à facturer pour cette opération.
Corps de la requête
{
  "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"
    }
  }
}

Remplacez les éléments suivants :

  • SNAPSHOT_PROJECT_ID : ID du projet contenant l'instantané à partir duquel vous effectuez la restauration.
  • SNAPSHOT_DATASET_NAME : nom de l'ensemble de données contenant l'instantané à partir duquel vous effectuez la restauration.
  • SNAPSHOT_NAME : nom de l'instantané à partir duquel vous effectuez la restauration.
  • TABLE_PROJECT_ID : ID du projet dans lequel créer la nouvelle table.
  • TABLE_DATASET_NAME : nom de l'ensemble de données contenant la table que vous écrasez.
  • TABLE_NAME : nom de la table que vous écrasez.

Si aucun délai d'expiration n'est spécifié, la table de destination expire après l'expiration du délai par défaut de la table pour l'ensemble de données contenant la table de destination.

Étapes suivantes