Copier les instantanés d'une table
Ce document explique comment créer une copie d'un instantané de table à l'aide de Google Cloud Console, de l'instruction SQL CREATE SNAPSHOT TABLE
, de la commande bq cp -s --no_clobber
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 copie d'un instantané de table, ainsi que les rôles IAM prédéfinis qui accordent ces autorisations.
Autorisations
Pour copier un instantané d'une table, vous avez besoin des autorisations suivantes :
Autorisation | Ressource |
---|---|
Tous les éléments suivants :bigquery.tables.get bigquery.tables.getData bigquery.tables.createSnapshot
|
L'instantané de table que vous souhaitez copier. |
bigquery.tables.create
|
Ensemble de données contenant la copie de l'instantané de la table. |
Rôles
Voici les rôles BigQuery prédéfinis qui fournissent les autorisations requises :
Rôle | Ressource |
---|---|
Au choix :bigquery.dataViewer bigquery.dataEditor bigquery.dataOwner bigquery.admin
|
L'instantané de table que vous souhaitez copier. |
Au choix :bigquery.dataEditor bigquery.dataOwner bigquery.admin
|
Ensemble de données contenant la copie de l'instantané de la table. |
Limites
Vous ne pouvez pas copier un instantané d'une table sur un instantané d'une table ou d'une table existante.
Pour en savoir plus sur les limitations des instantanés de table, consultez la section Limites des instantanés de table.
Copier un instantané de table
Le processus de copie d'un instantané de table est similaire au processus de création d'un instantané d'une table. La différence est que vous spécifiez l'instantané de table que vous souhaitez copier en tant que table source.
Vous pouvez créer une copie d'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 que vous souhaitez examiner.
Cliquez sur le nom de l'instantané de table.
Dans le volet de l'instantané qui s'affiche, cliquez sur Copier.
Dans le volet Copier la table qui s'affiche, saisissez le projet, l'ensemble de données et la table pour la copie de l'instantané de la table de destination.
Cliquez sur Copier.
SQL
Utilisez l'instruction LDD CREATE SNAPSHOT TABLE
:
Dans Google Cloud Console, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
CREATE SNAPSHOT TABLE COPY_PROJECT_ID.COPY_DATASET_NAME.COPY_NAME CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;
Remplacez les éléments suivants :
COPY_PROJECT_ID
: ID du projet dans lequel créer la copie d'instantanés.COPY_DATASET_NAME
: nom de l'ensemble de données dans lequel créer la copie d'instantanés.COPY_NAME
: nom de la copie d'instantané que vous créez.SNAPSHOT_PROJECT_ID
: ID du projet contenant l'instantané que vous copiez.SNAPSHOT_DATASET_NAME
: nom de l'ensemble de données contenant l'instantané que vous copiez.SNAPSHOT_NAME
: nom de l'instantané que vous copiez.
Cliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez la page Exécuter des requêtes interactives.
bq
Saisissez la commande suivante dans Cloud Shell :
bq cp \ -s \ --no_clobber \ SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \ COPY_PROJECT_ID:COPY_DATASET_NAME.COPY_NAME
Remplacez les éléments suivants :
SNAPSHOT_PROJECT_ID
: ID du projet contenant l'instantané que vous copiez.SNAPSHOT_DATASET_NAME
: nom de l'ensemble de données contenant l'instantané que vous copiez.SNAPSHOT_NAME
: nom de l'instantané que vous copiez.COPY_PROJECT_ID
: ID du projet dans lequel créer la copie d'instantanés.COPY_DATASET_NAME
: nom de l'ensemble de données dans lequel créer la copie d'instantanés.COPY_NAME
: nom de la copie d'instantané que vous créez.
L'option --no_clobber
est obligatoire.
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": "COPY_PROJECT_ID", "datasetId": "COPY_DATASET_NAME", "tableId": "COPY_NAME" }, "operationType": "SNAPSHOT", "writeDisposition": "WRITE_EMPTY" } } } |
Remplacez les éléments suivants :
SNAPSHOT_PROJECT_ID
: ID du projet contenant l'instantané que vous copiez.SNAPSHOT_DATASET_NAME
: nom de l'ensemble de données contenant l'instantané que vous copiez.SNAPSHOT_NAME
: nom de l'instantané que vous copiez.COPY_PROJECT_ID
: ID du projet dans lequel créer la copie d'instantanés.COPY_DATASET_NAMECOPY_DATASET_NAME
: nom de l'ensemble de données dans lequel créer la copie d'instantanés.COPY_NAME
: nom de la copie d'instantané que vous créez.