Gérer les tables
Ce document explique comment gérer les tables dans BigQuery. Vous pouvez gérer vos tables BigQuery comme suit :
- Mettez à jour les propriétés de la table :
- Date/Heure d'expiration
- Description
- Définition du schéma
- Libellés
- Renommer (copier) une table
- Copier une table
- Supprimer une table
- Restaurer une table supprimée
Pour en savoir plus sur la création et l'utilisation des tables, y compris sur l'obtention d'informations sur les tables, l'établissement d'une liste des tables et le contrôle de l'accès aux données des tables, consultez la page Créer et utiliser des tables.
Avant de commencer
Attribuez aux utilisateurs des rôles IAM (Identity and Access Management) incluant les autorisations nécessaires pour effectuer l'ensemble des tâches du présent document. Les autorisations requises pour effectuer une tâche (le cas échéant) sont répertoriées dans la section "Autorisations requises" de la tâche.
Mettre à jour les propriétés d'une table
Vous pouvez mettre à jour les éléments suivants d'une table :
- Description
- Date/Heure d'expiration
- Définition du schéma
- Libellés
- Table name (Nom de la table)
Autorisations requises
Pour mettre à jour une table, vous avez besoin des autorisations IAM suivantes :
bigquery.tables.update
bigquery.tables.get
Chacun des rôles IAM prédéfinis suivants inclut les autorisations dont vous avez besoin pour mettre à jour une table :
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
En outre, si vous disposez de l'autorisation bigquery.datasets.create
, vous pouvez mettre à jour les propriétés des tables des ensembles de données que vous créez.
Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la page Rôles prédéfinis et autorisations.
Mettre à jour la description d'une table
Vous pouvez mettre à jour la description d'une table comme suit :
- En utilisant la console.
- En soumettant une instruction LDD (langage de définition de données)
ALTER TABLE
- Exécuter la commande
bq update
de l'outil de ligne de commandebq
- En appelant la méthode API
tables.patch
- En utilisant les bibliothèques clientes
Pour mettre à jour la description d'une table :
Console
Vous ne pouvez pas ajouter de description lorsque vous créez une table à l'aide de la console. Une fois la table créée, vous pouvez ajouter une description sur la page Details (Détails).
Dans le panneau Explorateur, développez votre projet et votre ensemble de données, puis sélectionnez la table.
Dans le panneau des détails, cliquez sur Détails.
Dans la section Description, cliquez sur l'icône en forme de crayon pour modifier la description
Saisissez une description dans la zone de texte, puis cliquez sur Mettre à jour pour enregistrer.
SQL
Utilisez l'instruction ALTER TABLE SET OPTIONS
.
L'instruction suivante met à jour la description d'une table nommée mytable
:
Dans la console, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
ALTER TABLE mydataset.mytable SET OPTIONS ( description = 'Description of mytable');
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
Exécutez la commande bq update
avec l'option --description
. Si vous mettez à jour une table dans un projet autre que votre projet par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en respectant le format suivant : project_id:dataset
.
bq update \ --description "description" \ project_id:dataset.table
Remplacez l'élément suivant :
description
: texte décrivant la table entre guillemets.project_id
: ID de votre projet.dataset
: nom de l'ensemble de données contenant la table que vous mettez à jour.table
: nom de la table que vous mettez à jour.
Exemples :
Pour remplacer la description de la table mytable
dans l'ensemble de données mydataset
par "Description de ma table", saisissez la commande suivante. L'ensemble de données mydataset
se trouve dans votre projet par défaut.
bq update --description "Description of mytable" mydataset.mytable
Pour remplacer la description de la table mytable
dans l'ensemble de données mydataset
par "Description de ma table", saisissez la commande suivante. L'ensemble de données mydataset
se trouve dans le projet myotherproject
, et non dans votre projet par défaut.
bq update \
--description "Description of mytable" \
myotherproject:mydataset.mytable
API
Appelez la méthode tables.patch
et utilisez la propriété description
dans la ressource de table pour mettre à jour la description de la table. Étant donné que la méthode tables.update
remplace l'intégralité de la ressource de table, la méthode tables.patch
est préférable.
Go
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Go décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery en langage Go.
Java
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Java.
Python
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Python.
Configurez la propriété Table.description et appelez Client.update_table() pour envoyer la mise à jour à l'API.Mettre à jour le délai d'expiration d'une table
Vous pouvez définir un délai d'expiration de la table par défaut au niveau de l'ensemble de données ou définir le délai d'expiration d'une table lors de sa création. La date/heure d'expiration d'une table est souvent appelée "time to live" (durée de vie) ou valeur TTL.
Lorsqu'une table expire, elle est supprimée avec toutes les données qu'elle contient. Si nécessaire, vous pouvez annuler la suppression de la table dans la période spécifiée pour l'ensemble de données. Pour en savoir plus, consultez la section Restaurer les tables supprimées.
Si vous définissez le délai d'expiration lorsque vous créez la table, la valeur TTL par défaut de l'ensemble de données est ignorée. Si vous ne définissez pas d'expiration de table par défaut au niveau de l'ensemble de données et que vous n'en définissez pas lors de sa création, la table n'expire jamais et vous devez la supprimer manuellement.
Une fois la table créée, vous pouvez mettre à jour ses date et heure d'expiration à tout moment comme suit :
- En utilisant la console.
- En soumettant une instruction LDD (langage de définition de données)
ALTER TABLE
- Exécuter la commande
bq update
de l'outil de ligne de commandebq
- En appelant la méthode API
tables.patch
- En utilisant les bibliothèques clientes
Pour mettre à jour la date/heure d'expiration d'une table :
Console
Vous ne pouvez pas ajouter de délai d'expiration lorsque vous créez une table à l'aide de la console. Une fois la table créée, vous pouvez ajouter ou mettre à jour le délai d'expiration de la table sur la page Table Details (Détails de la table).
Dans le panneau Explorateur, développez votre projet et votre ensemble de données, puis sélectionnez la table.
Dans le panneau des détails, cliquez sur Détails.
Cliquez sur l'icône en forme de crayon à côté des Table info (Informations sur la table).
Pour Table expiration (Expiration de la table), sélectionnez Specify date (Spécifier une date). Sélectionnez ensuite la date d'expiration à l'aide du widget Agenda.
Cliquez sur Update (Mettre à jour) pour enregistrer la modification. Le délai d'expiration mis à jour apparaît dans la section Table info (Informations sur la table).
SQL
Utilisez l'instruction ALTER TABLE SET OPTIONS
.
L'exemple suivant met à jour l'heure d'expiration d'une table nommée mytable
:
Dans la console, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
ALTER TABLE mydataset.mytable SET OPTIONS ( -- Sets table expiration to timestamp 2025-02-03 12:34:56 expiration_timestamp = TIMESTAMP '2025-02-03 12:34:56');
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
Exécutez la commande bq update
avec l'option --expiration
. Si vous mettez à jour une table dans un projet autre que votre projet par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en respectant le format suivant : project_id:dataset
.
bq update \
--expiration integer \
project_id:dataset.table
Remplacez l'élément suivant :
integer
: durée de vie par défaut (en secondes) de la table. La valeur minimale est de 3 600 secondes (une heure). Le délai d'expiration correspond à l'heure actuelle plus la valeur entière. Si vous spécifiez0
, le délai d'expiration de la table est supprimé, et la table n'expire jamais. Les tables sans délai d'expiration doivent être supprimées manuellement.project_id
: ID de votre projet.dataset
: nom de l'ensemble de données contenant la table que vous mettez à jour.table
: nom de la table que vous mettez à jour.
Exemples :
Pour faire passer le délai d'expiration de la table mytable
de l'ensemble de données mydataset
à cinq jours (432 000 secondes), saisissez la commande suivante. L'ensemble de données mydataset
se trouve dans votre projet par défaut.
bq update --expiration 432000 mydataset.mytable
Pour faire passer le délai d'expiration de la table mytable
de l'ensemble de données mydataset
à cinq jours (432 000 secondes), saisissez la commande suivante. L'ensemble de données mydataset
se trouve dans le projet myotherproject
, et non dans votre projet par défaut.
bq update --expiration 432000 myotherproject:mydataset.mytable
API
Appelez la méthode tables.patch
et utilisez la propriété expirationTime
dans la ressource de table pour mettre à jour le délai d'expiration de la table (en millisecondes). Étant donné que la méthode tables.update
remplace l'intégralité de la ressource de table, la méthode tables.patch
est préférable.
Go
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Go décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery en langage Go.
Java
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Java.
Node.js
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Node.js décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Node.js.
Python
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Python.
Configurez la propriété Table.expires et appelez Client.update_table() pour envoyer la mise à jour à l'API.Pour mettre à jour le délai d'expiration de la partition de l'ensemble de données par défaut, procédez comme suit :
Java
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Java.
Python
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Python.
Mettre à jour la définition d'un schéma de table
Pour plus d'informations sur la mise à jour de la définition d'un schéma de table, consultez la page Modifier des schémas de table.
Renommer une table
Vous pouvez renommer une table après sa création à l'aide de l'instruction ALTER TABLE RENAME TO
.
L'exemple suivant renomme mytable
en mynewtable
:
ALTER TABLE mydataset.mytable
RENAME TO mynewtable;
Limites du changement de nom des tables
- Actuellement, vous ne pouvez pas renommer une table jusqu'à 72 heures après la dernière opération de streaming.
Copier une table
Cette section explique comment créer une copie complète d'une table. Pour en savoir plus sur les autres types de copies de tables, consultez les sections Clones de tables et Instantanés de table.
Vous pouvez copier une table comme suit :
- Utilisez la console.
- Exécutez la commande
bq cp
. - Utilisez une instruction LDD (langage de définition de données)
CREATE TABLE COPY
. - Appelez la méthode API jobs.insert et configurez une tâche
copy
. - Utilisez les bibliothèques client.
Limites de la copie de tables
Les tâches de copie de tables sont soumises aux limites suivantes :
- Lorsque vous copiez une table, le nom de la table de destination doit respecter les mêmes conventions d'attribution de noms que lorsque vous créez une table.
- Les copies de tables sont soumises aux limites de BigQuery applicables aux tâches de copie.
- Lorsque vous utilisez la console pour copier une table, vous ne pouvez pas écraser une table existante dans l'ensemble de données de destination. La table doit avoir un nom unique dans l'ensemble de données de destination.
- Lorsque vous copiez des tables, l'ensemble de données de destination doit se trouver dans le même emplacement que l'ensemble de données contenant la table à copier. Par exemple, vous ne pouvez pas copier une table à partir d'un ensemble de données basé au sein de l'UE et l'écrire dans un ensemble de données basé aux États-Unis.
- La console ne permet pas de copier plusieurs tables sources dans une table de destination.
- Lorsque vous copiez plusieurs tables sources dans une table de destination à l'aide de l'API ou de l'outil de ligne de commande
bq
, toutes les tables sources doivent contenir des schémas identiques. - Le temps nécessaire à BigQuery pour copier les tables peut varier considérablement selon les exécutions, car le stockage sous-jacent est géré de manière dynamique.
Autorisations requises
Pour effectuer les tâches décrites dans ce document, vous devez disposer des autorisations suivantes.
Autorisations pour copier des tables et des partitions
Pour copier des tables et des partitions, vous devez disposer d'autorisations IAM sur les ensembles de données source et de destination.
Vous avez besoin des éléments suivants sur l'ensemble de données source :
bigquery.tables.get
bigquery.tables.getData
Vous avez besoin des éléments suivants sur l'ensemble de données de destination :
bigquery.tables.create
: cette autorisation vous permet de créer une copie de la table ou de la partition dans l'ensemble de données de destination.
Chacun des rôles IAM prédéfinis suivants inclut les autorisations dont vous avez besoin pour copier des tables et des partitions :
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
Autorisation pour exécuter une tâche de copie
Pour exécuter une tâche de copie, vous avez besoin de l'autorisation IAM bigquery.jobs.create
.
Chacun des rôles IAM prédéfinis suivants inclut les autorisations dont vous avez besoin pour exécuter une tâche de copie :
roles/bigquery.user
roles/bigquery.jobUser
roles/bigquery.admin
En outre, si vous disposez de l'autorisation bigquery.datasets.create
, vous pouvez copier des tables et des partitions dans les ensembles de données que vous créez. Vous devez également avoir accès à l'ensemble de données de destination.
Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la page Rôles prédéfinis et autorisations.
Copier une seule table source
Vous pouvez copier une seule table comme suit :
- En utilisant la console.
- Exécuter la commande
bq cp
de l'outil de ligne de commandebq
- En soumettant une instruction LDD (langage de définition de données)
CREATE TABLE COPY
- En appelant la méthode API
jobs.insert
, en configurant une tâche de copie (copy
) et en spécifiant la propriétésourceTable
- Utiliser les bibliothèques clientes
La console et l'instruction CREATE TABLE COPY
n'acceptent qu'une table source et une table de destination dans une tâche de copie. Pour copier plusieurs fichiers sources dans une table de destination, vous devez utiliser l'outil de ligne de commande bq
ou l'API.
Pour copier une seule table source :
Console
Dans le panneau Explorateur, développez votre projet et votre ensemble de données, puis sélectionnez la table.
Dans le panneau de détails, cliquez sur Copier une table.
Dans la boîte de dialogue Copy table (Copier la table), sous Destination :
- Pour Nom du projet, choisissez le projet qui hébergera la table copiée.
- Pour Nom de l'ensemble de données, sélectionnez l'ensemble de données dans lequel vous souhaitez stocker la table copiée. Les ensembles de données source et de destination doivent être stockés dans le même emplacement.
- Pour Table name (Nom de la table), saisissez un nom pour la nouvelle table. Le nom doit être unique dans l'ensemble de données de destination. Vous ne pouvez pas écraser une table existante dans l'ensemble de données de destination à l'aide de la console. Pour plus d'informations sur les exigences concernant les noms de table, consultez la page Nommer les tables.
Cliquez sur Copier pour démarrer la tâche de copie.
SQL
Utilisez l'instruction CREATE TABLE COPY
pour copier une table nommée table1
dans une nouvelle table nommée table1copy
:
Dans la console, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
CREATE TABLE
myproject.mydataset.table1copy
COPYmyproject.mydataset.table1
;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
Exécutez la commande bq cp
. Les indicateurs facultatifs peuvent être utilisés pour contrôler la disposition d'écriture de la table de destination :
-a
ou--append_table
ajoute les données de la table source à une table existante de l'ensemble de données de destination.-f
ou--force
écrase une table existante dans l'ensemble de données de destination, et ne vous demande pas de confirmation.-n
ou--no_clobber
renvoie le message d'erreur suivant si la table existe dans l'ensemble de données de destination :Table 'project_id:dataset.table' already exists, skipping.
Si-n
n'est pas spécifié, le comportement par défaut consiste à vous demander si vous souhaitez remplacer la table de destination.--destination_kms_key
est la clé Cloud KMS gérée par le client et utilisée pour chiffrer la table de destination.
--destination_kms_key
n'est pas présenté ici. Pour en savoir plus, consultez la page Protéger des données avec des clés Cloud Key Management Service.
Si l'ensemble de données source ou de destination se trouve dans un projet autre que votre projet par défaut, ajoutez l'ID du projet aux noms des ensembles de données en respectant le format suivant : project_id:dataset
.
(Facultatif) Spécifiez l'option --location
et définissez la valeur correspondant à votre emplacement.
bq --location=location cp \ -a -f -n \project_id:dataset.source_table
\project_id:dataset.destination_table
Remplacez l'élément suivant :
location
: nom de votre emplacement. L'option--location
est facultative. Par exemple, si vous utilisez BigQuery dans la région de Tokyo, vous pouvez définir la valeur de l'option surasia-northeast1
. Vous pouvez définir une valeur par défaut correspondant à l'emplacement à l'aide du fichier.bigqueryrc
.project_id
: ID de votre projet.dataset
: nom de l'ensemble de données source ou de destination.source_table
: la table que vous copiez.destination_table
: nom de la table dans l'ensemble de données de destination.
Exemples :
Pour copier la table mydataset.mytable
vers la table mydataset2.mytable2
, saisissez la commande suivante. Les deux ensembles de données sont dans votre projet par défaut.
bq cp mydataset.mytable mydataset2.mytable2
Pour copier la table mydataset.mytable
et écraser une table de destination portant le même nom, saisissez la commande suivante. L'ensemble de données source est dans votre projet par défaut. L'ensemble de données de destination se trouve dans le projet myotherproject
. Le raccourci -f
permet d'écraser la table de destination sans invite.
bq cp -f \
mydataset.mytable \
myotherproject:myotherdataset.mytable
Pour copier la table mydataset.mytable
et renvoyer une erreur si l'ensemble de données de destination contient une table portant le même nom, saisissez la commande suivante :
L'ensemble de données source est dans votre projet par défaut. L'ensemble de données de destination se trouve dans le projet myotherproject
. Le raccourci -n
permet d'éviter d'écraser une table portant le même nom.
bq cp -n \
mydataset.mytable \
myotherproject:myotherdataset.mytable
Pour copier la table mydataset.mytable
et ajouter les données à une table de destination portant le même nom, utilisez la commande suivante : L'ensemble de données source est dans votre projet par défaut. L'ensemble de données de destination se trouve dans le projet myotherproject
. Le raccourci -
a
permet d'ajouter des données à la table de destination.
bq cp -a mydataset.mytable myotherproject:myotherdataset.mytable
API
Vous pouvez copier une table existante via l'API en appelant la méthode bigquery.jobs.insert
et en configurant une tâche de copie (copy
). Spécifiez l'emplacement dans la propriété location
de la section jobReference
de la ressource de tâche.
Vous devez spécifier les valeurs suivantes dans votre configuration de tâche :
"copy": { "sourceTable": { // Required "projectId": string, // Required "datasetId": string, // Required "tableId": string // Required }, "destinationTable": { // Required "projectId": string, // Required "datasetId": string, // Required "tableId": string // Required }, "createDisposition": string, // Optional "writeDisposition": string, // Optional },
Où sourceTable
fournit des informations sur la table à copier, destinationTable
fournit des informations sur la nouvelle table, createDisposition
précise si la table doit être créée si elle n'existe pas, et writeDisposition
indique s'il convient d'écraser une table existante ou d'y ajouter des données.
C#
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour C# décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery C#.
Go
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Go décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery en langage Go.
Java
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Java.
Node.js
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Node.js décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Node.js.
PHP
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour PHP dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery PHP.
Python
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Python.
Copier plusieurs tables sources
Vous pouvez copier plusieurs tables sources dans une table de destination comme suit :
- Exécuter la commande
bq cp
de l'outil de ligne de commandebq
- En appelant la méthode
jobs.insert
, en configurant une tâche de copie (copy
) et en spécifiant la propriétésourceTables
- En utilisant les bibliothèques clientes
Toutes les tables sources doivent avoir des schémas identiques et une seule table de destination est autorisée.
Vous devez spécifier les tables sources sous forme de liste en les séparant par une virgule. Vous ne pouvez pas utiliser de caractères génériques lorsque vous copiez plusieurs tables sources.
Pour copier plusieurs tables sources, sélectionnez l'une des options suivantes :
bq
Exécutez la commande bq cp
et incluez plusieurs tables sources sous forme de liste séparée par des virgules. Les indicateurs facultatifs peuvent être utilisés pour contrôler la disposition d'écriture de la table de destination :
-a
ou--append_table
ajoute les données des tables sources à une table existante de l'ensemble de données de destination.-f
ou--force
écrase une table de destination existante dans l'ensemble de données de destination, et ne vous demande pas de confirmation.-n
ou--no_clobber
renvoie le message d'erreur suivant si la table existe dans l'ensemble de données de destination :Table 'project_id:dataset.table' already exists, skipping.
Si-n
n'est pas spécifié, le comportement par défaut consiste à vous demander si vous souhaitez remplacer la table de destination.--destination_kms_key
est la clé Cloud Key Management Service gérée par le client et utilisée pour chiffrer la table de destination.
--destination_kms_key
n'est pas présenté ici. Pour en savoir plus, consultez la page Protéger des données avec des clés Cloud Key Management Service.
Si l'ensemble de données source ou de destination se trouve dans un projet autre que votre projet par défaut, ajoutez l'ID du projet aux noms des ensembles de données en respectant le format suivant : project_id:dataset
.
(Facultatif) Spécifiez l'option --location
et définissez la valeur correspondant à votre emplacement.
bq --location=location cp \ -a -f -n \project_id:dataset.source_table
,project_id:dataset.source_table
\project_id:dataset.destination_table
Remplacez l'élément suivant :
location
: nom de votre emplacement. L'option--location
est facultative. Par exemple, si vous utilisez BigQuery dans la région de Tokyo, vous pouvez définir la valeur de l'option surasia-northeast1
. Vous pouvez définir une valeur par défaut correspondant à l'emplacement à l'aide du fichier.bigqueryrc
.project_id
: ID de votre projet.dataset
: nom de l'ensemble de données source ou de destination.source_table
: table que vous copiez.destination_table
: nom de la table dans l'ensemble de données de destination.
Exemples :
Pour copier la table mydataset.mytable
et la table mydataset.mytable2
vers la table mydataset2.tablecopy
, saisissez la commande suivante : Tous les ensembles de données sont dans votre projet par défaut.
bq cp \
mydataset.mytable,mydataset.mytable2 \
mydataset2.tablecopy
Pour copier la table mydataset.mytable
et la table mydataset.mytable2
vers la table myotherdataset.mytable
, et pour écraser une table de destination portant le même nom, saisissez la commande suivante : L'ensemble de données de destination se trouve dans le projet myotherproject
, et non dans votre projet par défaut. Le raccourci -f
permet d'écraser la table de destination sans invite.
bq cp -f \
mydataset.mytable,mydataset.mytable2 \
myotherproject:myotherdataset.mytable
Pour copier la table myproject:mydataset.mytable
et la table myproject:mydataset.mytable2
, et renvoyer une erreur si l'ensemble de données de destination contient une table portant le même nom, saisissez la commande suivante : L'ensemble de données de destination se trouve dans le projet myotherproject
. Le raccourci -n
permet d'éviter d'écraser une table portant le même nom.
bq cp -n \
myproject:mydataset.mytable,myproject:mydataset.mytable2 \
myotherproject:myotherdataset.mytable
Pour copier la table mydataset.mytable
et la table mydataset.mytable2
, et pour ajouter les données à une table de destination portant le même nom, saisissez la commande suivante :
L'ensemble de données source est dans votre projet par défaut. L'ensemble de données de destination se trouve dans le projet myotherproject
. Le raccourci -a
permet d'ajouter des données à la table de destination.
bq cp -a \
mydataset.mytable,mydataset.mytable2 \
myotherproject:myotherdataset.mytable
API
Pour copier plusieurs tables à l'aide de l'API, appelez la méthode jobs.insert
, configurez une tâche de copie (copy
) de table et spécifiez la propriété sourceTables
.
Spécifiez la région dans la propriété location
de la section jobReference
de la ressource de tâche.
Go
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Go décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery en langage Go.
Java
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Java.
Node.js
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Node.js décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Node.js.
Python
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Python.
Supprimer des tables
Vous pouvez supprimer une table comme suit :
- En utilisant la console.
- En soumettant une instruction LDD (langage de définition de données)
DROP TABLE
- En utilisant la commande
bq rm
de l'outil de ligne de commandebq
- Appeler la méthode API
tables.delete
- En utilisant les bibliothèques clientes
Actuellement, vous ne pouvez supprimer qu'une table à la fois.
Lorsque vous supprimez une table, toutes les données de la table sont également supprimées. Pour supprimer automatiquement des tables après une période donnée, définissez le délai d'expiration par défaut de la table pour l'ensemble de données ou spécifiez le délai d'expiration lorsque vous créez la table.
Autorisations requises
Pour supprimer une table, vous devez disposer des autorisations IAM suivantes :
bigquery.tables.delete
bigquery.tables.get
Chacun des rôles IAM prédéfinis suivants inclut les autorisations dont vous avez besoin pour supprimer une table :
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
En outre, si vous disposez de l'autorisation bigquery.datasets.create
, vous pouvez supprimer les tables des ensembles de données que vous créez.
Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la page Rôles prédéfinis et autorisations.
Supprimer une table
Pour supprimer une table :
Console
Dans le panneau Explorateur, développez votre projet et votre ensemble de données, puis sélectionnez la table.
Dans le panneau de détails, cliquez sur Supprimer la table.
Saisissez
"delete"
dans la boîte de dialogue, puis cliquez sur Supprimer pour confirmer.
SQL
Utilisez l'instruction DROP TABLE
.
L'exemple suivant supprime une table nommée mytable
:
Dans la console, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
DROP TABLE mydataset.mytable;
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
Exécutez la commande bq rm
avec l'option --table
(ou le raccourci -t
) pour supprimer une table. Lorsque vous supprimez une table à l'aide de l'outil de ligne de commande bq
, vous devez confirmer l'action. Vous pouvez utiliser l'option --force
(ou le raccourci -f
) pour ignorer la confirmation.
Si la table se trouve dans un ensemble de données d'un projet autre que votre projet par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en respectant le format suivant : project_id:dataset
.
bq rm \ -f \ -t \ project_id:dataset.table
Remplacez l'élément suivant :
project_id
: ID de votre projet.dataset
: nom de l'ensemble de données contenant la table.table
: nom de la table que vous supprimez.
Exemples :
Pour supprimer la table mytable
de l'ensemble de données mydataset
, saisissez la commande suivante.
L'ensemble de données mydataset
se trouve dans votre projet par défaut.
bq rm -t mydataset.mytable
Pour supprimer la table mytable
de l'ensemble de données mydataset
, saisissez la commande suivante.
L'ensemble de données mydataset
se trouve dans le projet myotherproject
, et non dans votre projet par défaut.
bq rm -t myotherproject:mydataset.mytable
Pour supprimer la table mytable
de l'ensemble de données mydataset
, saisissez la commande suivante.
L'ensemble de données mydataset
se trouve dans votre projet par défaut. La commande utilise le raccourci -f
pour contourner la confirmation.
bq rm -f -t mydataset.mytable
API
Appelez la méthode API tables.delete
et spécifiez la table à supprimer à l'aide du paramètre tableId
.
C#
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour C# décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery C#.
Go
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Go décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery en langage Go.
Java
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Java.
Node.js
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Node.js décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Node.js.
PHP
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour PHP dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery PHP.
Python
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Python.
Ruby
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Ruby décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery en langage Ruby.
Restaurer les tables supprimées
Vous pouvez annuler la suppression d'une table pendant la période spécifiée pour l'ensemble de données, y compris les suppressions explicites et implicites dues à l'expiration de la table. La possibilité de configurer la fenêtre temporelle est en version bêta.
La période temporelle peut durer entre deux et sept jours. Une fois le délai écoulé, il n'est plus possible d'annuler la suppression d'une table, quelle que soit la méthode utilisée, y compris pour ouvrir une demande d'assistance.
Lorsque vous restaurez une table partitionnée qui a été supprimée car elle a expiré, vous devez recréer manuellement les partitions.
Vous pouvez restaurer une table supprimée, mais toujours dans la fenêtre temporelle, en copiant la table dans une nouvelle table, à l'aide du décorateur d'heure @<time>
.
Pour copier la table, vous pouvez utiliser l'outil de ligne de commande bq
ou les bibliothèques clientes :
Console
Vous ne pouvez pas annuler la suppression d'une table à l'aide de la console.
bq
Pour restaurer une table, utilisez une opération de copie de table avec le décorateur d'instantané @<time>
. Tout d'abord, déterminez un horodatage UNIX (en millisecondes) lorsque la table existait. Exécutez ensuite la commande bq copy
avec le décorateur d'instantané.
Par exemple, saisissez la commande suivante pour copier la table mydataset.mytable
au moment 1418864998000
dans une nouvelle table mydataset.newtable
.
bq cp mydataset.mytable@1418864998000 mydataset.newtable
(Facultatif) Spécifiez l'option --location
et définissez la valeur correspondant à votre emplacement.
Vous pouvez également spécifier un décalage relatif. L'exemple suivant copie la version d'une table d'il y a une heure :
bq cp mydataset.mytable@-3600000 mydataset.newtable
Pour plus d'informations, consultez la section Restaurer une table à un moment précis.
Go
Java
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Java.
Node.js
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Node.js décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Node.js.
Python
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Python.
Si vous prévoyez de restaurer une table ultérieurement à ce qui est autorisé par la fenêtre temporelle, créez un instantané de la table. Pour en savoir plus, consultez la section Instantanés de table.
Sécurité des tables
Pour savoir comment contrôler l'accès aux tables dans BigQuery, consultez la page Présentation des contrôles d'accès aux tables.
Étape suivante
- Pour plus d'informations sur la création et l'utilisation des tables, consultez la page Créer et utiliser des tables.
- Pour plus d'informations sur la gestion des données, consultez la page Gérer des données de table.
- Pour en savoir plus sur la spécification des schémas de table, consultez la page Spécifier un schéma.
- Pour en savoir plus sur la modification des schémas de table, consultez la page Modifier des schémas de table.
- Pour en savoir plus sur les ensembles de données, consultez la page Présentation des ensembles de données.
- Pour plus d'informations sur les vues, consultez la page Présentation des vues.