En esta página, se describe cómo importar datos de un archivo SQL almacenado en un bucket de Cloud Storage a un clúster de AlloyDB para PostgreSQL. Los archivos SQL son archivos de texto sin formato con una secuencia de comandos de SQL.
Puedes cancelar la importación de datos en clústeres de AlloyDB. Para obtener más información, consulta Cómo cancelar una operación de importación.
Antes de comenzar
Antes de comenzar una operación de importación, haz lo siguiente:
- Asegúrate de que tu base de datos tenga suficiente espacio libre.
- Las operaciones de importación usan recursos de bases de datos, pero no interfieren en las operaciones normales de la base de datos, a menos que el clúster no cuente con el aprovisionamiento suficiente.
Roles y permisos obligatorios para importar a AlloyDB
Para importar datos de Cloud Storage a AlloyDB, el usuario que inicia la importación debe tener uno de los siguientes roles:
- El rol de administrador de AlloyDB
- Un rol personalizado que incluya los siguientes permisos:
alloydb.clusters.get
alloydb.clusters.import
Además, la cuenta de servicio del clúster de AlloyDB debe tener uno de los siguientes roles:
- El rol de IAM
storage.objectViewer
- Un rol personalizado que incluya los siguientes permisos:
storage.objects.get
Si deseas obtener ayuda con los roles de IAM, consulta Administración de identidades y accesos.
Importa un archivo SQL a los clústeres de AlloyDB
Para importar datos a un clúster de AlloyDB con un archivo SQL, sigue estos pasos:
Console
Ve a la página Clústeres.
Haz clic en el nombre de un clúster para abrir la página Descripción general de ese clúster.
Haz clic en Importar.
En Elige el archivo del cual deseas importar datos, ingresa la ruta de acceso al bucket y el archivo SQL que se usará para la importación, o navega a un archivo existente.
Selecciona la base de datos hacia la cual deseas importar los datos.
Esto hace que AlloyDB ejecute la instrucción
USE DATABASE
antes de la importación. Si el archivo de volcado de SQL incluye una instrucciónUSE DATABASE
, se anula la base de datos que estableciste en la consola de Google Cloud.Opcional: Especifica un usuario para la operación de importación. Si tu archivo de importación contiene instrucciones que un usuario específico debe llevar a cabo, usa este campo para especificar ese usuario.
Para iniciar la operación de importación, haz clic en Importar.
gcloud
- Crea buckets de Cloud Storage.
Sube el archivo SQL a tu bucket. Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.
Usa gcloud storage buckets add-iam-policy-binding para otorgar el
storage.objectViewer
rol de IAM a la cuenta de servicio del clúster de AlloyDB para el bucket:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Realiza los siguientes reemplazos:
- CLUSTER_NAME: el nombre del clúster
- REGION: Es la región en la que se implementa el clúster de AlloyDB.
- BUCKET_NAME: el nombre del bucket de Cloud Storage.
- FILE_NAME: El nombre del archivo CSV.
- DATABASE_NAME: Es el nombre de una base de datos dentro del clúster.
- USER: Es el usuario de la operación de importación.
- TABLE_NAME: Es la tabla dentro de la base de datos.
Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
Importa el archivo:
gcloud alloydb clusters import CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' --user=USERNAME --sql
Si el comando muestra un error como
PERMISSION_DENIED
, revisa los permisos.Para obtener información sobre el uso del comando
import
, consulta la página de referencia del comandoalloydb import
.Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos a través de
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crea buckets de Cloud Storage.
- Sube el archivo SQL a tu bucket. Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.
Otorga permisos a la cuenta de servicio para el bucket de Cloud Storage para la operación de importación. Usa el formato de cuenta de servicio para identificar la cuenta de servicio del proyecto al que realizas la importación. El formato de la cuenta de servicio es el siguiente:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Usa gcloud storage buckets add-iam-policy-binding para otorgar el rol de IAM
storage.objectViewer
a la cuenta de servicio del clúster de AlloyDB para el bucket. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.Importa tu archivo SQL.
Usa el siguiente método y URL HTTP:
POST https://alloydbadmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import
Antes de usar cualquiera de los datos de solicitud, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- LOCATION_ID: Es la región en la que se implementa el clúster de AlloyDB.
- CLUSTER_ID: El ID del clúster.
- BUCKET_NAME: el nombre del bucket de Cloud Storage.
- PATH_TO_SQL_FILE: Es la ruta de acceso al archivo SQL.
- USER: Es el usuario que se usará para la importación.
- DATABASE_NAME: Es el nombre de una base de datos dentro del clúster de AlloyDB.
Cuerpo JSON de la solicitud:
{ "gcsUri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE", "database": "DATABASE_NAME", "user": "USER", "sqlImportOptions": {} }
Para enviar tu solicitud, expande una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando: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)
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:$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
Recibirás una respuesta JSON similar a la siguiente:
Respuesta
{ "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 }
Si quieres usar un usuario diferente para la importación, especifica la propiedad del usuario.
Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos ahora.
Si quieres obtener la lista completa de los parámetros de esta solicitud, consulta
clusters:import
.
Verifica el estado de una operación de importación
Para verificar el estado de una operación de importación, sigue estos pasos:
gcloud
Ejecuta lo siguiente con el comando gcloud alloydb operations describe
:
gcloud alloydb operations describe OPERATION_ID --region=REGION
También puedes enumerar detalles de una operación específica o cancelar una operación específica. Para obtener más información sobre este comando, consulta la página de referencia del comando gcloud alloydb operations
.
REST v1
Usa el método GET
y la siguiente URL:
GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Para obtener más información, consulta get
.
Antes de usar cualquiera de los datos de solicitud, realiza los siguientes reemplazos:
- REGION: Es la región en la que se implementa el clúster de AlloyDB.
- PROJECT_ID: El ID del proyecto.
- OPERATION_ID: Es el ID de la operación de importación. Para obtener más información, consulta Antes de comenzar.
Para enviar tu solicitud, expande una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el siguiente comando:
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)
Ejecuta el siguiente comando:
$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
Recibirás una respuesta JSON similar a la siguiente:
Si se ejecuta correctamente, el cuerpo de la respuesta contiene una instancia de Operation.
¿Qué sigue?
- Obtén más información para importar un archivo CSV.
- Obtén información para cancelar una operación de importación.
- Verifica el estado de una operación de importación.