Cette page explique comment importer des données à partir d'un fichier CSV stocké dans un bucket Cloud Storage dans un cluster AlloyDB pour PostgreSQL.
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 des clusters 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:
- Rôle Administrateur AlloyDB
- Un rôle personnalisé, y compris les autorisations suivantes :
alloydb.clusters.get
alloydb.clusters.import
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 la page Identity and Access Management.
Importer des données à partir d'un fichier CSV dans des clusters AlloyDB
- La base de données et la table dans lesquelles vous effectuez l'importation doivent exister sur votre cluster AlloyDB. 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.
- Les fichiers CSV doivent comporter une ligne par rangée de données ainsi que des champs séparés par une virgule.
Pour importer des données dans un cluster AlloyDB à l'aide d'un fichier CSV, procédez comme suit:
gcloud
- Créez un bucket Cloud Storage.
- Importez le fichier CSV dans le bucket. Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.
Utilisez gcloud storage buckets add-iam-policy-binding pour accorder le rôle IAM
storage.objectViewer
au compte de service AlloyDB du bucket.service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
Importez le fichier :
gcloud alloydb clusters import CLUSTER_NAME --region=REGION --gcs-uri=gs://BUCKET_NAME/FILE_NAME --database=DATABASE_NAME --user=USER --csv --table=TABLE_NAME
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 en savoir plus sur l'utilisation de la commande
import
, consultez la page de référence de la commandealloydb import
.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
- Créez un bucket Cloud Storage.
- Importez le fichier CSV dans le bucket. Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.
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
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.Importez le fichier.
Utilisez la méthode HTTP et l'URL suivantes:
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/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_CSV_FILE: chemin d'accès au fichier CSV.
- USER: utilisateur de l'opération d'importation.
- DATABASE_NAME: nom d'une base de données dans le cluster AlloyDB.
- TABLE_NAME: table de la base de données.
- COLUMNS (facultatif): colonnes à importer.
- ESCAPE_CHARACTER (facultatif): caractère devant précéder un caractère de données devant être échappé. La valeur de cet argument doit être un caractère en code ASCII hexadécimal. Par exemple,
22
représente un guillemet double. - QUOTE_CHARACTER (facultatif): caractère qui contient des valeurs de colonnes contenant un type de données de chaîne.
La valeur de cet argument doit être un caractère en code ASCII hexadécimal.
Par exemple,
22
représente un guillemet double. - FIELD_DELIMITER (facultatif): caractère séparant les valeurs de colonne. La valeur de cet argument doit être un caractère en code ASCII hexadécimal. Par exemple,
2C
représente une virgule.
Corps JSON de la requête :
{ "gcsUri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE", "database": "DATABASE_NAME", "user": "USER", "csvImportOptions": { "table": "TABLE_NAME", "columns": ["COLUMN1", "COLUMN2"], "fieldDelimiter": "FIELD_DELIMITER", "quoteCharacter": "QUOTE_CHARACTER", "escapeCharacter": "ESCAPE_CHARACTER" } }
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": "2024-09-17T06:05:31.244428646Z", "target": "projects/project-id/locations/location-id/clusters/target-cluster", "verb": "import", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
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
.
Personnaliser le format CSV et importer le fichier
Vous pouvez personnaliser le format CSV et importer le fichier lorsque celui-ci contient un séparateur de champ non par défaut, ou des caractères de guillemets ou d'échappement. Pour importer un fichier CSV avec un format autre que le format par défaut, vous devez fournir les mêmes options de mise en forme dans la requête.
Utilisez les exemples de gcloud CLI et d'API REST suivants pour vous aider à personnaliser le format de votre fichier CSV.
gcloud
gcloud alloydb clusters import CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri='gs://BUCKET_NAME/PATH_TO_CSV_FILE' --user=USERNAME --table=TABLE_NAME --columns=COLUMNS --field-delimiter='2C' --quote-character='22' --escape-character='5C' --csv
REST v1
Le corps de requête API REST équivalent ressemble à ceci:
{
"gcsUri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE",
"database": "DATABASE_NAME",
"user": "USER",
"csvImportOptions": {
"table": "TABLE_NAME",
"columns": ["COLUMN1", "COLUMN2"],
"escapeCharacter": "5C",
"quoteCharacter": "22",
"fieldDelimiter": "2C",
}
}
Pour découvrir comment est formée la requête d'API REST sous-jacente pour cette tâche, consultez la page clusters:import
dans APIs Explorer.
Si vous obtenez une erreur telle que INVALID_ARGUMENT
, vérifiez que la table existe bien. Si elle existe, 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.
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 ce qui suit à l'aide de la commande gcloud alloydb operations describe:
gcloud alloydb operations describe OPERATION_ID --region=REGION
L'état de ces opérations est indiqué dans le champ STATUS
.
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
- Découvrez comment importer un fichier SQL.
- Découvrez comment annuler une opération d'importation.
- Vérifiez l'état d'une opération d'importation.