Importer un fichier SQL

Cette page explique comment importer des données à partir d'un fichier SQL stocké dans un bucket Cloud Storage dans un cluster AlloyDB pour PostgreSQL. Les fichiers SQL sont des fichiers au format texte brut comportant une séquence de commandes SQL.

Vous pouvez annuler l'importation des données vers des clusters AlloyDB. Pour en savoir plus, consultez la section Annuler une opération d'importation.

Avant de commencer

Avant de lancer une opération d'importation:

  • Assurez-vous que votre base de données dispose d'un espace de stockage suffisant.
  • Les opérations d'importation 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 le cluster est sous-provisionné.

Rôles et autorisations requis pour l'importation dans AlloyDB

Pour importer des données de Cloud Storage dans AlloyDB, l'utilisateur qui lance l'importation doit disposer de l'un des rôles suivants:

De plus, le compte de service du cluster AlloyDB doit disposer de l'un des rôles suivants:

  • Le rôle IAM storage.objectViewer
  • Un rôle personnalisé comprenant les autorisations suivantes :
    • storage.objects.get

Pour obtenir de l'aide sur les rôles IAM, consultez Identity and Access Management (Gestion de l'authentification et des accès).

Importer un fichier SQL dans des clusters AlloyDB

Pour importer des données dans un cluster AlloyDB à l'aide d'un fichier SQL, procédez comme suit:

Console

  1. Accédez à la page Clusters.

    accéder aux clusters

  2. Cliquez sur le nom d'un cluster pour ouvrir la page Présentation correspondante.

  3. Cliquez sur Importer.

  4. Dans Sélectionnez le fichier à partir duquel vous souhaitez importer des données, saisissez le chemin d'accès au bucket et au fichier SQL à utiliser pour l'importation, ou accédez à un fichier existant.

  5. Sélectionnez la base de données dans laquelle vous souhaitez importer les données.

    AlloyDB exécute alors l'instruction USE DATABASE avant l'importation. Si votre fichier de vidage SQL inclut une instruction USE DATABASE, il remplace la base de données que vous avez définie dans la console Google Cloud.

  6. Facultatif: spécifiez un utilisateur pour l'opération d'importation. Si votre fichier d'importation contient des instructions devant être exécutées par un utilisateur spécifique, utilisez ce champ pour le spécifier.

  7. Pour lancer l'opération d'importation, cliquez sur Importer.

gcloud

  1. Créez un bucket Cloud Storage.
  2. Importez le fichier SQL dans votre bucket. Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.

  3. Utilisez gcloud storage buckets add-iam-policy-binding pour accorder le rôle IAM storage.objectViewer au compte de service du cluster AlloyDB pour le bucket:

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    Effectuez les remplacements suivants :

    • CLUSTER_NAME : nom du cluster.
    • REGION: région dans laquelle le cluster AlloyDB est déployé.
    • BUCKET_NAME: nom du bucket Cloud Storage.
    • FILE_NAME: nom du fichier CSV.
    • DATABASE_NAME: nom d'une base de données dans le cluster.
    • USER: utilisateur de l'opération d'importation.
    • TABLE_NAME: table de la base de données.

    Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.

  4. Importez le fichier :

    gcloud alloydb clusters import CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' --user=USERNAME --sql

    Si la commande affiche une erreur de type PERMISSION_DENIED, vérifiez les autorisations.

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

  5. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les à l'aide de gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. Créez un bucket Cloud Storage.
  2. Importez le fichier SQL dans votre bucket. Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.
  3. Accordez au compte de service des autorisations pour le bucket Cloud Storage pour l'opération d'importation. Utilisez le format de compte de service pour identifier le compte de service du projet dans lequel vous importez. Le format du compte de service est le suivant:

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
  4. Utilisez gcloud storage buckets add-iam-policy-binding pour accorder le rôle IAM storage.objectViewer au compte de service du cluster AlloyDB pour le bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.

  5. Importez votre fichier SQL.

    Utilisez la méthode HTTP et l'URL suivantes:

    POST https://alloydbadmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import

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

    • PROJECT_ID : ID du projet.
    • LOCATION_ID: région dans laquelle le cluster AlloyDB est déployé.
    • CLUSTER_ID: ID du cluster.
    • BUCKET_NAME: nom du bucket Cloud Storage.
    • PATH_TO_SQL_FILE: chemin d'accès au fichier SQL.
    • USER: utilisateur à utiliser pour l'importation.
    • DATABASE_NAME: nom d'une base de données dans le cluster AlloyDB.

    Corps JSON de la requête :

    {
       "gcsUri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE",
       "database": "DATABASE_NAME",
       "user": "USER",
       "sqlImportOptions": {}
    }
    

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

    curl (Linux, macOS ou Cloud Shell)

    Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

       curl -X POST \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d @request.json \
             "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"
    

    PowerShell (Windows)

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"| Select-Object -Expand Content
    

    Vous recevez une réponse JSON semblable à celle-ci:

    Réponse

    {
     "name": "projects/project-id/locations/location-id/operations/operation-id",
     "metadata": {
      "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
      "createTime": "2025-01-04T13:12:32.363393723Z",
      "target": "projects/project-id/locations/location-id/clusters/cluster-id",
      "verb": "import",
      "requestedCancellation": false,
      "apiVersion": "v1"
     },
     "done": false
    }
    

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

  6. 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 obtenir la liste complète des paramètres de la requête, consultez clusters:import.

Vérifier l'état d'une opération d'importation

Pour vérifier l'état d'une opération d'importation, procédez comme suit:

gcloud

Exécutez la commande suivante à l'aide de la commande gcloud alloydb operations describe:

gcloud alloydb operations describe OPERATION_ID --region=REGION

Vous pouvez également répertorier les détails d'une opération spécifique ou annuler une opération spécifique. Pour en savoir plus sur cette commande, consultez la page de référence de la commande gcloud alloydb operations.

REST v1

Utilisez la méthode GET et l'URL suivante:

GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

Pour en savoir plus, consultez la page get.

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

  • REGION: région dans laquelle le cluster AlloyDB est déployé.
  • PROJECT_ID : ID du projet.
  • OPERATION_ID: ID de l'opération d'importation. Pour en savoir plus, consultez la section Avant de commencer.

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

curl (Linux, macOS ou Cloud Shell)

Exécutez la commande suivante :

  curl -X GET \
       -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
 

PowerShell (Windows)

Exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID | Select-Object -Expand Content

Vous recevez une réponse JSON semblable à celle-ci:

Si la requête aboutit, le corps de la réponse contient une instance d'Opération.

Étape suivante