Importer des données dans Cloud SQL

Cette page explique comment importer des données dans des instances Cloud SQL. Vous pouvez importer des données à partir de fichiers de vidage SQL ou CSV.

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

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

Importer des données à partir d'un fichier de vidage SQL dans Cloud SQL

Avant de commencer

  • Cette procédure nécessite l'importation d'un fichier à partir de Cloud Storage. Pour importer des données depuis Cloud Storage, le compte de service de l'instance Cloud SQL ou l'utilisateur doit disposer du rôle Cloud IAM Storage Object Admin (storage.objectAdmin). Pour obtenir de l'aide sur les rôles Cloud 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. Vous pouvez vérifier les rôles de votre bucket Cloud Storage à l'aide de l'outil gsutil :

    gsutil iam get gs://[BUCKET_NAME]

    Découvrez comment utiliser Cloud IAM avec des buckets.

  • Créez un fichier de vidage SQL. Suivez les instructions ci-dessous correspondant à votre situation. Ces instructions définissent certaines options qui rendent le fichier de vidage compatible avec Cloud SQL.

  • Avant d'importer un fichier de vidage SQL, assurez-vous que tous les utilisateurs de la base de donnée vidée qui possèdent des objets ou qui disposent d'autorisations sur des objets qu'elle contient existent dans la nouvelle base de données. Si ce n'est pas le cas, l'importation ne parvient pas à recréer les objets en rétablissant les propriétaires et/ou les autorisations d'origine. (Cela peut parfois être le comportement souhaité, mais ce n'est généralement pas le cas).

    Pour savoir comment créer des utilisateurs, consultez la page Créer des utilisateurs.

Importer des données à partir d'un fichier de vidage SQL dans Cloud Storage

Pour importer des données à partir d'un fichier de vidage SQL vers une instance Cloud SQL, 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. Sélectionnez l'instance pour ouvrir la page Présentation correspondante.
  3. Cliquez sur Importer dans la barre de boutons.
  4. Sous Sélectionnez le fichier à partir duquel vous souhaitez importer des données, saisissez le chemin d'accès au bucket et au fichier de vidage SQL à utiliser pour l'importation. Ou pour accéder au fichier :
    1. Cliquez sur Parcourir.
    2. Sous Emplacement, double-cliquez sur le nom du bucket dans la liste.
    3. Sélectionnez le fichier dans la liste.
    4. Cliquez sur Sélectionner.

    Vous pouvez importer un fichier compressé (.gz) ou non compressé (.sql).

  5. Pour le paramètre Format, sélectionnez SQL.
  6. Sélectionnez la base de données dans laquelle vous souhaitez importer les données.

    Cloud SQL exécute alors l'instruction USE DATABASE (Utiliser la base de données) avant l'importation.

  7. Si vous souhaitez spécifier un utilisateur PostgreSQL pour effectuer l'importation, sélectionnez-le.

    Si votre fichier d'importation contient des instructions devant être exécutées par un utilisateur PostgreSQL spécifique, utilisez ce champ pour le spécifier.

  8. Cliquez sur Importer pour démarrer l'importation.

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 des objets.

  3. Décrivez l'instance dans laquelle vous réalisez l'importation :
    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.
      gsutil iam ch serviceAccount:[SERVICE-ACCOUNT]:objectAdmin \
      gs://[BUCKET-NAME]
      
    Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  6. Importez la base de données :
    gcloud sql import sql [INSTANCE_NAME] gs://[BUCKET_NAME]/[IMPORT_FILE_NAME] \
                                --database=[DATABASE_NAME]
    

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

    Si la commande affiche une erreur de type "ERROR_RDBMS", vérifiez les autorisations. Cette erreur est souvent liée à des problèmes d'autorisations.

  7. Si vous n'avez pas besoin de conserver les autorisations Cloud IAM que vous avez définies précédemment, supprimez-les en utilisant gsutil iam.

REST

    Créez un fichier de vidage SQL. Suivez les instructions ci-dessous correspondant à votre situation. Ces instructions définissent certaines options qui rendent le fichier de vidage compatible avec Cloud SQL.

  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 des objets.

  3. 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.
  4. Importez le fichier de vidage :

    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_sql_file : chemin d'accès au fichier SQL
    • database_name : nom d'une base de données dans l'instance Cloud SQL

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

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

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

    Pour utiliser un autre utilisateur pour l'importation, spécifiez la propriété importContext.importUser.

    Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.
  5. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les dès maintenant.
Pour découvrir comment est formée la requête sous-jacente de l'API REST pour cette tâche, consultez la page sur la méthode instances:import dans APIs Explorer.

Importer des données à partir de fichiers CSV dans Cloud SQL

Avant de commencer

  • Cette procédure nécessite l'importation d'un fichier à partir de Cloud Storage. Pour importer des données depuis Cloud Storage, le compte de service de l'instance Cloud SQL ou l'utilisateur doit disposer du rôle Cloud IAM Storage Object Admin (storage.objectAdmin). Pour obtenir de l'aide sur les rôles Cloud 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. Vous pouvez vérifier les rôles de votre bucket Cloud Storage à l'aide de l'outil gsutil :

    gsutil iam get gs://[BUCKET_NAME]

    Découvrez comment utiliser Cloud IAM avec des buckets.

  • La base de données et la table dans lesquelles vous procédez à l'importation doivent déjà exister sur l'instance Cloud SQL. Pour obtenir de l'aide concernant la création d'une base de données, consultez la page Créer une base de données. Pour créer une table dans la base de données, utilisez l'instruction SQL CREATE TABLE dans le client psql.
  • Votre fichier CSV doit être conforme aux [exigences de format de fichier CSV](#csv-reqs) ci-dessous.

Exigences relatives au format de fichier CSV

Les fichiers CSV doivent comporter une ligne par rangée de données ainsi que des champs séparés par une virgule.

Pour obtenir des instructions sur l'exportation vers un fichier CSV formaté pour Cloud SQL, consultez la section Exporter des données de Cloud SQL vers un fichier CSV.

Importer des données à partir d'un fichier CSV dans Cloud Storage

Pour importer des données dans une instance Cloud SQL à l'aide d'un fichier CSV :

Console

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

    Accéder à la page "Instances Cloud SQL"

  2. Sélectionnez l'instance pour ouvrir la page Présentation correspondante.
  3. Cliquez sur Importer dans la barre de boutons.
  4. Sous Sélectionner le fichier à partir duquel vous souhaitez importer des données, saisissez le chemin d'accès au bucket et au fichier CSV à utiliser pour l'importation. Ou pour accéder au fichier :
    1. Cliquez sur Parcourir.
    2. Sous Emplacement, double-cliquez sur le nom du bucket dans la liste.
    3. Sélectionnez le fichier dans la liste.
    4. Cliquez sur Sélectionner.

    Vous pouvez importer un fichier compressé (.gz) ou non compressé (.csv).

  5. Sous Format, sélectionnez CSV.
  6. Spécifiez la base de données et la table de votre instance Cloud SQL dans lesquelles vous souhaitez importer le fichier CSV.
  7. Vous pouvez éventuellement spécifier un utilisateur pour l'importation.
  8. Cliquez sur Importer pour démarrer l'importation.

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 des objets.

  3. Importez les données du fichier CSV dans le bucket.
  4. Décrivez l'instance à partir de laquelle vous souhaitez exporter :
    gcloud sql instances describe [INSTANCE_NAME]
    
  5. Copiez le champ serviceAccountEmailAddress.
  6. Utilisez gsutil iam pour accorder au compte de service le rôle IAM Cloud storage.objectAdmin sur le bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  7. Importez le fichier :
    gcloud sql import csv [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                                --database=[DATABASE_NAME] --table=[TABLE_NAME]
    

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

  8. Si vous n'avez pas besoin de conserver les autorisations Cloud IAM que vous avez définies précédemment, supprimez-les en utilisant gsutil iam.

REST

  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 des objets.

  3. 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.
  4. Importez les données à partir du fichier :

    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
    • table_name : nom de la table de base de données

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "CSV",
          "uri": "gs://bucket_name/path_to_csv_file",
          "database": "database_name",
          "csvImportOptions":
           {
             "table": "table_name"
           }
       }
    }
    
    

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

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

    Pour utiliser un autre utilisateur pour l'importation, spécifiez la propriété importContext.importUser.

    Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.
  5. Si vous n'avez pas besoin de conserver les autorisations Cloud IAM que vous avez définies précédemment, supprimez-les.

Si vous obtenez une erreur telle que ERROR_RDBMS, vérifiez que la table existe bien. Si tel est le cas, vérifiez que vous disposez des autorisations appropriées sur le bucket. Pour vous aider à configurer le contrôle des accès dans Cloud Storage, consultez la page Créer et gérer des listes de contrôle d'accès.

Pour découvrir comment est formée la requête sous-jacente de l'API REST pour cette tâche, consultez la page sur la méthode instances:import dans APIs Explorer.

Importer des données dans Cloud SQL à l'aide de pg_restore

Vous pouvez utiliser l'utilitaire pg_restore pour importer une base de données dans Cloud SQL. pg_restore ne fonctionne qu'avec les fichiers d'archive créés par pg_dump. En savoir plus sur pg_restore.

pg_restore -h [CLOUD_SQL_INSTANCE_IP] -U [USERNAME] --format=plain --no-owner --no-acl -d [DATABASE_NAME] [SQL_FILE].sql

Pour importer en parallèle, utilisez l'indicateur -j NUM_CORES. NUM_CORES est le nombre de cœurs sur l'instance source. Utilisez le même indicateur avec pg_dump pour exporter en parallèle.

Étapes suivantes