Exporter des données

Cette page explique comment exporter des données à partir d'instances Cloud SQL ou d'un serveur de base de données non géré par Cloud SQL.

Pour exporter des données vers Cloud Storage, le compte de service de l'instance doit avoir le rôle IAM storage.objectAdmin défini dans le projet. Pour plus d'informations, consultez la page Cloud Identity and Access Management pour Cloud Storage.

Les exportations utilisent des ressources de base de données, mais elles n'interfèrent pas avec les opérations de base de données normales, sauf si l'instance est sous-provisionnée.

Pour obtenir des conseils en matière d'exportation de données, consultez la page Bonnes pratiques pour l'importation et l'exportation de données.

Vous pouvez exporter un fichier CSV. Vous pouvez également exporter un fichier de vidage SQL, par exemple si vous souhaitez exporter vers une autre base de données SQL.

Exportation standard et exportation sans serveur

Pour une exportation standard depuis Cloud SQL, l'exportation est exécutée tant que la base de données est en ligne. Lorsque les bases de données exportées sont plus petites, l'impact est susceptible d'être minime. Toutefois, en cas de bases de données ou d'objets volumineux, tels que des BLOB dans la base de données, il est possible que l'exportation réduise les performances de la base de données. Cela peut avoir un impact sur le temps nécessaire pour exécuter des requêtes et des opérations sur la base de données. Une fois que vous avez lancé une exportation, il n'est pas possible de l'arrêter si votre base de données commence à répondre lentement.

Pour éviter les réponses lentes lors d'une exportation, vous pouvez utiliser une exportation sans serveur. Avec l'exportation sans serveur, Cloud SQL crée une instance temporaire distincte pour décharger l'opération d'exportation. Le déchargement de l'opération d'exportation permet aux bases de données de l'instance principale de continuer à diffuser des requêtes et d'effectuer des opérations au débit de performances habituel. Une fois l'exportation des données terminée, l'instance temporaire est automatiquement supprimée.

Une exportation sans serveur prend plus de temps qu'une exportation standard, car la création de l'instance temporaire prend du temps. La durée minimale est de 5 minutes, mais pour les bases de données plus volumineuses, cela peut prendre plus de temps. Prenez en compte l'impact sur le temps et les performances avant de déterminer le type d'exportation à utiliser.

Vous pouvez utiliser l'exportation sans serveur sur une instance principale ou une instance dupliquée avec accès en lecture.

Pour obtenir des conseils en matière d'exportation de données, consultez la page Bonnes pratiques pour l'importation et l'exportation de données.

Exporter des données de Cloud SQL vers un fichier de vidage SQL

Lorsque vous utilisez Cloud SQL pour effectuer une exportation, que ce soit depuis Cloud Console, l'outil de ligne de commande gcloud ou l'API, vous faites appel à l'utilitaire pg_dump en spécifiant les options nécessaires pour garantir la validité du fichier d'exportation obtenu pour sa réimportation dans Cloud SQL.

Vous pouvez également exécuter pg_dump manuellement à l'aide du client psql, si vous effectuez une exportation vers une base de données non gérée par Cloud SQL.

Si vous envisagez d'importer vos données dans Cloud SQL, vous devez suivre les instructions fournies dans la section Exporter des données à partir d'un serveur de base de données externe afin que votre fichier de vidage SQL soit correctement formaté pour Cloud SQL.

Avant de commencer

Cette procédure nécessite l'exportation d'un fichier vers Cloud Storage. Pour exporter des données vers Cloud Storage, le compte de service de l'instance doit disposer des rôles IAM storage.objectAdmin définis dans le projet. Pour obtenir de l'aide sur les rôles IAM, consultez la page Cloud Identity and Access Management pour Cloud Storage.

Vous trouverez le nom du compte de service de l'instance dans Google Cloud Console sur la page Présentation de votre instance. Pour vérifier les rôles de votre bucket Cloud Storage, servez-vous de l'outil gsutil pour inspecter le bucket :

gsutil iam get gs://[BUCKET_NAME]

En savoir plus sur l'utilisation d'IAM avec des buckets.

Exporter des données vers un fichier de vidage SQL dans Cloud Storage

Pour exporter des données d'une base de données sur une instance Cloud SQL vers un fichier de vidage SQL dans un bucket Cloud Storage, procédez comme suit :

Console

  1. Accédez à la page "Instances Cloud SQL" dans Google Cloud Console.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur l'instance à partir de laquelle vous souhaitez exporter des données pour ouvrir la page Présentation correspondante.
  3. Dans la barre de boutons, cliquez sur EXPORTER.
  4. Sous Format de fichier, cliquez sur SQL pour créer un fichier de vidage SQL.
  5. Sous Données à exporter, sélectionnez la base de données à utiliser pour l'exportation dans le menu déroulant.
  6. Sous Destination, sélectionnez Parcourir pour rechercher un bucket ou un dossier Cloud Storage pour l'exportation.
  7. Cliquez sur Exporter pour démarrer l'exportation.

gcloud

  1. Créez un bucket Cloud Storage, si ce n'est pas déjà fait.

    Pour obtenir de l'aide concernant la création d'un bucket, consultez la page Créer des buckets de stockage.

  2. Importez le fichier dans le bucket.

    Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer un objet.

  3. Décrivez l'instance à partir de laquelle vous souhaitez exporter :
      gcloud sql instances describe [INSTANCE_NAME]
      
  4. Copiez le champ "serviceAccountEmailAddress".
  5. Utilisez gsutil iam pour accorder le rôle IAM storage.objectAdmin au compte de service du bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  6. Exportez la base de données :
      gcloud sql export sql [INSTANCE_NAME] gs://[BUCKET_NAME]/sqldumpfile.gz \
                                  --database=[DATABASE_NAME] --offload
      

    La commande export sql ne contient pas de déclencheurs ni de procédures stockées, mais elle contient des vues. Pour exporter des déclencheurs et/ou des procédures stockées, utilisez l'outil pg_dump.

    Pour plus d'informations sur l'utilisation de la commande export sql, consultez la page de référence de la commande sql export sql.

  7. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.

REST v1beta4

  1. Créez un bucket pour l'exportation de la manière suivante :
    gsutil mb -p [PROJECT_NAME] -l [LOCATION_NAME] gs://[BUCKET_NAME]
    

    Bien que cette étape soit facultative, nous vous recommandons de la suivre pour vous éviter d'ouvrir l'accès à d'autres données.

  2. Attribuez à votre instance le rôle IAM storage.objectAdmin pour votre bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  3. Exportez votre base de données :

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • project-id : ID du projet.
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_dump_file : chemin d'accès au conteneur de vidage SQL
    • database_name_1 : nom d'une base de données dans l'instance Cloud SQL
    • database_name_2 : nom d'une base de données dans l'instance Cloud SQL
    • offload : active l'exportation sans serveur. Définissez la valeur sur true pour utiliser l'exportation sans serveur.

    Méthode HTTP et URL :

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export

    Corps JSON de la requête :

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"]
          "offload": true | false
        }
    }
    

    Pour envoyer votre requête, développez l'une des options suivantes :

    Vous devriez recevoir une réponse JSON de ce type :

  4. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:export.

Exporter des données depuis Cloud SQL vers un fichier CSV

Vous pouvez exporter vos données au format CSV, qui peut être utilisé par d'autres outils et environnements. Les exportations ont lieu au niveau de la base de données. Lors d'une exportation au format CSV, vous pouvez spécifier les schémas à exporter. Tout schéma situé à un niveau inférieur à celui de la base de données peut être exporté.

Avant de commencer

Cette procédure nécessite l'exportation d'un fichier vers Cloud Storage. Pour exporter des données vers Cloud Storage, le compte de service de l'instance doit disposer des rôles IAM storage.objectAdmin définis dans le projet. Pour obtenir de l'aide sur les rôles IAM, consultez la page Cloud Identity and Access Management pour Cloud Storage.

Vous trouverez le nom du compte de service de l'instance dans Google Cloud Console sur la page Présentation de votre instance. Pour vérifier les rôles de votre bucket Cloud Storage, servez-vous de l'outil gsutil pour inspecter le bucket :

gsutil iam get gs://[BUCKET_NAME]

En savoir plus sur l'utilisation d'IAM avec des buckets.

Exporter des données vers un fichier CSV dans Cloud Storage

Pour exporter des données d'une base de données sur une instance Cloud SQL vers un fichier de vidage SQL dans un bucket Cloud Storage, procédez comme suit :

Console

  1. Accédez à la page "Instances Cloud SQL" dans Google Cloud Console.

    Accéder à la page "Instances Cloud SQL"

  2. Cliquez sur l'instance pour ouvrir la page Présentation correspondante.
  3. Cliquez sur EXPORTER.
  4. Sous Emplacement de l'exportation dans Cloud Storage, sélectionnez un bucket ou un dossier Cloud Storage pour votre exportation.
  5. Dans le champ Nom, indiquez un nom pour votre fichier d'exportation et cliquez sur Sélectionner.

    Vous pouvez utiliser l'extension de fichier .gz pour obtenir un fichier d'exportation compressé.

  6. Définissez le Format sur CSV.
  7. Sous Emplacement de l'exportation dans Cloud Storage, ajoutez le nom du bucket, du dossier et du fichier que vous souhaitez exporter, ou cliquez sur Parcourir pour rechercher ou créer un bucket, un dossier ou un fichier.

    Si vous cliquez sur Parcourir :

    1. Sous Emplacement, sélectionnez un bucket ou un dossier Cloud Storage pour votre exportation.
    2. Dans la zone de texte Nom, saisissez un nom pour le fichier CSV ou, si vous avez déjà créé le fichier, sélectionnez-le dans la liste sous Emplacement.

      Vous pouvez utiliser une extension de fichier .gz (l'extension complète est .csv.gz) pour compresser votre fichier d'exportation.

    3. Cliquez sur Sélectionner.
  8. Sous Format, cliquez sur CSV.
  9. Sous Base de données pour l'exportation, sélectionnez le nom de la base de données dans le menu déroulant.
  10. Sous Requête SQL, saisissez une requête SQL pour spécifier la table à partir de laquelle exporter les données.

    Par exemple, pour exporter l'intégralité du contenu de la table entries de la base de données guestbook, vous devez saisir :

    SELECT * FROM guestbook.entries;
    Votre requête doit spécifier une table de la base de données spécifiée ; vous ne pouvez pas exporter une base de données entière au format CSV.

  11. Cliquez sur Exporter pour démarrer l'exportation.
  12. La boîte de dialogue Exporter la base de données ? s'ouvre avec un message indiquant que le processus d'exportation peut prendre une heure ou plus pour les bases de données volumineuses. Pendant l'exportation, la seule opération que vous pouvez effectuer sur l'instance est d'afficher ses informations. Vous ne pouvez pas arrêter l'exportation une fois celle-ci démarrée. Si vous souhaitez lancer une exportation, cliquez sur EXPORTER. Sinon, cliquez sur ANNULER.

gcloud

  1. Créez un bucket Cloud Storage, si ce n'est pas déjà fait.

    Pour obtenir de l'aide concernant la création d'un bucket, consultez la page Créer des buckets de stockage.

  2. Importez le fichier dans le bucket.

    Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer un objet.

  3. Décrivez l'instance à partir de laquelle vous souhaitez exporter :
    gcloud sql instances describe [INSTANCE_NAME]
    
  4. Utilisez gsutil iam pour accorder le rôle IAM storage.objectAdmin au compte de service du bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  5. Exportez la base de données :
    gcloud sql export csv [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                                --database=[DATABASE_NAME]
                                --offload
                                --query=[SELECT_QUERY]
    

    Pour plus d'informations sur l'utilisation de la commande export csv, consultez la page de référence de la commande sql export csv.

  6. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.

REST v1beta4

  1. Créez un bucket pour l'exportation de la manière suivante :
    gsutil mb -p [PROJECT_NAME] -l [LOCATION_NAME] gs://[BUCKET_NAME]
    

    Bien que cette étape soit facultative, nous vous recommandons de la suivre pour vous éviter d'ouvrir l'accès à d'autres données.

  2. Attribuez à votre instance le rôle IAM storage.objectAdmin pour votre bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  3. Exportez votre base de données :

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • project-id : ID du projet.
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_csv_file : chemin d'accès au fichier CSV
    • database_name : nom d'une base de données dans l'instance Cloud SQL
    • offload : active l'exportation sans serveur. Définissez la valeur sur true pour utiliser l'exportation sans serveur.
    • select_query : requête SQL pour l'exportation

    Méthode HTTP et URL :

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export

    Corps JSON de la requête :

    {
     "exportContext":
       {
          "fileType": "CSV",
          "uri": "gs://bucket_name/path_to_csv_file",
          "databases": ["database_name"],
          "offload": true | false
          "csvExportOptions":
           {
               "selectQuery":"select_query"
           }
       }
    }
    

    Pour envoyer votre requête, développez l'une des options suivantes :

    Vous devriez recevoir une réponse JSON de ce type :

    Vous devez spécifier une seule base de données via la propriété databases, et si la requête "select" spécifie une base de données, celle-ci doit être identique.

  4. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:export.

L'exportation au format CSV crée un fichier de sortie au format CSV standard. Si vous avez besoin d'un fichier au format CSV non standard, appliquez l'instruction suivante dans un client psql :

  \copy [table_name] TO '[csv_file_name].csv' WITH
      (FORMAT csv, ESCAPE '[escape_character]', QUOTE '[quote_character]',
      DELIMITER '[delimiter_character]', ENCODING 'UTF8', NULL '[null_marker_string]');
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:export.

Exporter des données à partir d'un serveur PostgreSQL sur site à l'aide de pg_dump

Pour exporter une base de données non gérée par Cloud SQL, en vue de son importation ultérieure dans Cloud SQL, utilisez l'utilitaire pg_dump avec les options suivantes :

  • --no-owner

    Les commandes de changement de propriété ne doivent pas être incluses dans le fichier de vidage SQL.

  • --format=plain

    Seul le format SQL brut est compatible avec Cloud SQL.

  • --no-acl

    Cette option est requise si votre fichier de vidage contient des instructions permettant d'accorder ou de révoquer l'adhésion à un rôle SUPERUSER.

En outre, vous devez supprimer tous les éléments suivants :

  • Les instructions liées aux extensions, en cas d'incompatibilité avec Cloud SQL. Reportez-vous à la section Extensions PostgreSQL pour connaître la liste des extensions compatibles.
  • Les instructions CREATE EXTENSION ou DROP EXTENSION faisant référence à plpgsql. Cette extension est préinstallée sur les instances Cloud SQL Postgres.
  • Les instructions COMMENT ON EXTENSION.

À partir d'une ligne de commande, exécutez pg_dump :

pg_dump -U [USERNAME] --format=plain --no-owner --no-acl [DATABASE_NAME] \
    | sed -E 's/(DROP|CREATE|COMMENT ON) EXTENSION/-- \1 EXTENSION/g' > [SQL_FILE].sql

Le post-traitement sed met en commentaire toutes les instructions d'extension dans le fichier de vidage SQL.

Vérifiez que l'encodage par défaut, tel que déterminé par les paramètres de la base de données, est correct pour vos données. Si nécessaire, vous pouvez remplacer les valeurs par défaut par l'option --encoding.

Pour spécifier une exportation en parallèle, utilisez l'option -j NUM_CORES. NUM_CORES est le nombre de cœurs sur l'instance source. Utilisez la même option avec pg_restore pour importer en parallèle.

Pour obtenir de l'aide concernant pg_dump, consultez la documentation de référence sur pg_dump.

Étapes suivantes