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
Dans la console Google Cloud, accédez à la page BigQuery.
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.
Cliquez sur le nom de l'instantané de table.
Dans le volet de l'instantané de table qui s'affiche, cliquez sur Restaurer.
Dans le volet Restaurer l'instantané qui s'affiche, saisissez les informations Projet, Ensemble de données et Table pour la nouvelle table.
Cliquez sur Enregistrer.
SQL
Utilisez l'instruction LDD CREATE TABLE CLONE
:
Dans la console Google Cloud, accédez à la page BigQuery.
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.
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 :
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
Dans la console Google Cloud, accédez à la page BigQuery.
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.
Cliquez sur le nom de l'instantané de table.
Dans le volet de l'instantané de table qui s'affiche, cliquez sur Restaurer.
Dans le volet Restaurer l'instantané qui s'affiche, saisissez les informations Projet, Ensemble de données et Table pour la table existante.
Sélectionnez Écraser la table si elle existe.
Cliquez sur Enregistrer.
SQL
Utilisez l'instruction LDD CREATE TABLE CLONE
:
Dans la console Google Cloud, accédez à la page BigQuery.
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.
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 :
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.