Exporta datos

En esta página, se describe cómo exportar datos desde instancias de Cloud SQL o desde un servidor de base de datos no administrado por Cloud SQL.

Si quieres obtener prácticas recomendadas a fin de exportar datos, consulta Prácticas recomendadas para la importación y exportación de datos.

Exporta datos de Cloud SQL a un archivo de volcado de SQL

Cuando usas Cloud SQL para ejecutar una exportación, ya sea desde Cloud Console, la herramienta de línea de comandos de gcloud o la API, se usa la utilidad pg_dump, con las opciones necesarias para garantizar que el archivo de exportación resultante sea válido a fin de que se pueda volver a importar a Cloud SQL.

También puedes ejecutar pg_dump de forma manual con el cliente psql si exportas a una base de datos que no administra Cloud SQL.

Si planeas importar los datos a Cloud SQL, debes seguir las instrucciones que se proporcionan en Exporta datos desde un servidor de base de datos externo a fin de que el archivo de volcado de SQL tenga el formato correcto para Cloud SQL.

Antes de comenzar

En este procedimiento, se requiere que exportes un archivo a Cloud Storage. Para exportar datos a Cloud Storage, la cuenta de servicio de la instancia debe tener las funciones de IAM storage.objectAdmin configuradas en el proyecto. Si deseas obtener ayuda con las funciones de IAM, consulta Cloud Identity and Access Management para Cloud Storage.

Puedes encontrar el nombre de la cuenta de servicio de la instancia en Google Cloud Console en la página Descripción general de la instancia. Puedes verificar las funciones del depósito de Cloud Storage mediante la herramienta de gsutil para inspeccionar el depósito:

gsutil iam get gs://[BUCKET_NAME]

Obtén más información sobre cómo usar IAM con depósitos.

Exporta datos a un archivo de volcado de SQL en Cloud Storage

Para exportar datos de una base de datos en una instancia de Cloud SQL a un archivo de volcado de SQL en un depósito de Cloud Storage, sigue estos pasos:

Console

  1. Ve a la página Instancias de Cloud SQL en Google Cloud Console.

    Ir a la página Instancias de Cloud SQL

  2. Haz clic en la instancia desde la que deseas exportar datos para abrir la página Descripción general.
  3. Haz clic en EXPORTAR en la barra de botones.
  4. En Ubicación de la exportación de Cloud Storage, agrega el nombre del depósito, la carpeta y el archivo que deseas exportar, o haz clic en Explorar para buscar o crear un depósito, una carpeta o un archivo.

    Si haces clic en Explorar, sigue estos pasos:

    1. En Ubicación, selecciona un depósito o una carpeta de Cloud Storage para la exportación.
    2. En el cuadro de texto Nombre, agrega un nombre para el archivo o, si ya lo creaste, selecciónalo desde la lista en Ubicación.

      Puedes usar una extensión de archivo .gz para comprimir el archivo de exportación.

    3. Haz clic en Seleccionar.
  5. En Formato, haz clic en SQL para crear un archivo de volcado de SQL.
  6. En Base de datos para exportar, usa el menú desplegable a fin de seleccionar la base de datos desde la que deseas exportar.
  7. Haz clic en Exportar para comenzar la exportación.
  8. Se abrirá el cuadro de diálogo ¿Exportar base de datos? con un mensaje que indica que el proceso de exportación puede tomar una hora o más en el caso de las bases de datos grandes. Durante la exportación, la única operación que puedes realizar en la instancia es visualizar la información. No podrás detener la exportación una vez que comience. Si es un buen momento para comenzar una exportación, haz clic en EXPORTAR. De lo contrario, haz clic en CANCELAR.

gcloud

  1. Si aún no lo hiciste, crea un depósito de Cloud Storage.

    Para obtener ayuda sobre cómo crear un depósito, consulta Crea depósitos de almacenamiento.

  2. Sube el archivo a tu depósito.

    Para obtener ayuda sobre cómo subir archivos a depósitos, consulta Sube objetos.

  3. Describe la instancia desde la que exportas:
      gcloud sql instances describe [INSTANCE_NAME]
      
  4. Copia el campo serviceAccountEmailAddress.
  5. Usa gsutil iam para otorgar la función de IAM storage.objectAdmin a la cuenta de servicio del depósito. Si deseas obtener ayuda con la configuración de los permisos de IAM, consulta Usa los permisos de IAM.
  6. Exporta la base de datos:
      gcloud sql export sql [INSTANCE_NAME] gs://[BUCKET_NAME]/sqldumpfile.sql.gz \
                                  --database=[DATABASE_NAME]
      

    Para obtener información sobre el uso del comando export sql, consulta la página de referencia del comando sql export sql.

  7. Si no necesitas retener la función de IAM que configuraste antes, revócala ahora.

REST

  1. Crea un depósito para la exportación:
    gsutil mb -p [PROJECT_NAME] -l [LOCATION_NAME] gs://[BUCKET_NAME]
    

    Este paso no es obligatorio, pero se recomienda para no habilitar el acceso a otros datos.

  2. Otórgale a tu instancia la función de IAM storage.objectAdmin para el depósito. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  3. Exporta tu base de datos:

    Antes de usar cualquiera de los datos de solicitud siguientes, realiza los siguientes reemplazos:

    • project-id: El ID del proyecto
    • instance-id: El ID de la instancia
    • bucket_name: El nombre del depósito de Cloud Storage
    • path_to_dump_file: La ruta de acceso al archivo de volcado de SQL
    • database_name: El nombre de una base de datos dentro de la instancia de Cloud SQL

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

  4. Si no necesitas retener la función de IAM que configuraste antes, revócala ahora.
Si deseas obtener una lista completa de parámetros para esta solicitud, consulta la página instances:export.

Exporta datos de Cloud SQL a un archivo CSV

Es posible exportar los datos en formato CSV de modo que otras herramientas y entornos puedan usarlos. Las exportaciones se realizan a nivel de la base de datos. Durante una exportación de CSV, puedes especificar los esquemas que se exportarán. Todos los esquemas en el nivel de la base de datos son aptos para la exportación.

Antes de comenzar

En este procedimiento, se requiere que exportes un archivo a Cloud Storage. Para exportar datos a Cloud Storage, la cuenta de servicio de la instancia debe tener las funciones de IAM storage.objectAdmin configuradas en el proyecto. Si deseas obtener ayuda con las funciones de IAM, consulta Cloud Identity and Access Management para Cloud Storage.

Puedes encontrar el nombre de la cuenta de servicio de la instancia en Google Cloud Console en la página Descripción general de la instancia. Puedes verificar las funciones del depósito de Cloud Storage mediante la herramienta de gsutil para inspeccionar el depósito:

gsutil iam get gs://[BUCKET_NAME]

Obtén más información sobre cómo usar IAM con depósitos.

Exporta datos a un archivo CSV en Cloud Storage

Para exportar datos de una base de datos en una instancia de Cloud SQL a un archivo de volcado de SQL en un depósito de Cloud Storage, sigue estos pasos:

Console

  1. Ve a la página Instancias de Cloud SQL en Google Cloud Console.

    Ir a la página Instancias de Cloud SQL

  2. Haz clic en la instancia para abrir la página de Descripción general de la instancia.
  3. Haz clic en EXPORTAR en la barra de botones.
  4. En Ubicación de la exportación de Cloud Storage, agrega el nombre del depósito, la carpeta y el archivo que deseas exportar, o haz clic en Explorar para buscar o crear un depósito, una carpeta o un archivo.

    Si haces clic en Explorar, sigue estos pasos:

    1. En Ubicación, selecciona un depósito o una carpeta de Cloud Storage para la exportación.
    2. En el cuadro de texto Nombre, agrega un nombre para el archivo CSV o, si ya lo creaste, selecciónalo desde la lista en Ubicación.

      Puedes usar una extensión de archivo .gz (la extensión completa sería .csv.gz) para comprimir el archivo de exportación.

    3. Haz clic en Seleccionar.
  5. En Formato, haz clic en CSV.
  6. En Base de datos para exportar, selecciona el nombre de la base de datos en el menú desplegable.
  7. En Consulta de SQL, ingresa una consulta de SQL para especificar la tabla desde la que deseas exportar los datos.

    Por ejemplo, para exportar todo el contenido de la tabla entries en la base de datos guestbook, deberías ingresar lo siguiente:

    SELECT * FROM guestbook.entries;
    En la consulta, debes especificar una tabla de la base de datos especificada; no puedes exportar una base de datos completa en formato CSV.

  8. Haz clic en Exportar para comenzar la exportación.
  9. Se abrirá el cuadro de diálogo ¿Exportar base de datos? con un mensaje que indica que el proceso de exportación puede tomar una hora o más en el caso de las bases de datos grandes. Durante la exportación, la única operación que puedes realizar en la instancia es visualizar la información. No podrás detener la exportación una vez que comience. Si es un buen momento para comenzar una exportación, haz clic en EXPORTAR. De lo contrario, haz clic en CANCELAR.

gcloud

  1. Si aún no lo hiciste, crea un depósito de Cloud Storage.

    Para obtener ayuda sobre cómo crear un depósito, consulta Crea depósitos de almacenamiento.

  2. Sube el archivo a tu depósito.

    Para obtener ayuda sobre cómo subir archivos a depósitos, consulta Sube objetos.

  3. Describe la instancia desde la que exportas:
    gcloud sql instances describe [INSTANCE_NAME]
    
  4. Usa gsutil iam para otorgar la función de IAM storage.objectAdmin a la cuenta de servicio del depósito. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  5. Exporta la base de datos:
    gcloud sql export csv [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                                --database=[DATABASE_NAME] --query=[SELECT_QUERY]
    

    Para obtener información sobre el uso del comando export csv, consulta la página de referencia del comando sql export csv.

  6. Si no necesitas retener la función de IAM que configuraste antes, revócala ahora.

REST

  1. Crea un depósito para la exportación:
    gsutil mb -p [PROJECT_NAME] -l [LOCATION_NAME] gs://[BUCKET_NAME]
    

    Este paso no es obligatorio, pero se recomienda para no habilitar el acceso a otros datos.

  2. Otórgale a tu instancia la función de IAM storage.objectAdmin para el depósito. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  3. Exporta tu base de datos:

    Antes de usar cualquiera de los datos de solicitud siguientes, realiza los siguientes reemplazos:

    • project-id: El ID del proyecto
    • instance-id: El ID de la instancia
    • bucket_name: El nombre del depósito de Cloud Storage
    • path_to_csv_file: La ruta de acceso al archivo CSV
    • database_name: El nombre de una base de datos dentro de la instancia de Cloud SQL
    • select_query: La consulta de SQL para la exportación

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    Debes especificar de manera exacta una base de datos con la propiedad databases y, si la consulta de selección especifica una base de datos, debe ser la misma.

  4. Si no necesitas retener la función de IAM que configuraste antes, revócala ahora.
Si deseas obtener una lista completa de parámetros para esta solicitud, consulta la página instances:export.

La exportación a CSV crea una salida CSV estándar. Si necesitas un formato CSV no estándar, puedes usar la siguiente instrucción en un cliente 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]');
Si deseas obtener una lista completa de parámetros para esta solicitud, consulta la página instances:export.

Exporta datos de un servidor PostgreSQL local mediante pg_dump

Si deseas exportar una base de datos que no administra Cloud SQL para luego importarla a Cloud SQL, usa la utilidad pg_dump con las siguientes marcas:

  • --no-owner

    Los comandos de cambio de propiedad no se deben incluir en el archivo de volcado de SQL.

  • --format=plain

    Cloud SQL solo admite el formato de SQL simple.

  • --no-acl

    Esta marca es obligatoria si tu volcado contiene instrucciones para otorgar o revocar la membresía de una función SUPERUSER.

Además, debes quitar todos estos elementos:

  • Las instrucciones relacionadas con extensiones, si Cloud SQL no la admite. Consulta Extensiones de PostgreSQL para ver una lista de extensiones admitidas.
  • Declaraciones CREATE EXTENSION o DROP EXTENSION que hacen referencia a plpgsql. Esta extensión viene preinstalada en instancias de Cloud SQL Postgres.
  • Instrucciones COMMENT ON EXTENSION.

En una línea de comandos, ejecuta 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

El procesamiento posterior sed comenta todas las instrucciones de extensión en el archivo de volcado de SQL.

Confirma que la codificación predeterminada, según lo que determine la configuración de la base de datos, sea la correcta para tus datos. Si es necesario, puedes anular el valor predeterminado con la marca --encoding.

Para exportar en paralelo, usa la marca -j NUM_CORES. NUM_CORES es la cantidad de núcleos en la instancia de origen. Usa la misma marca con pg_restore para importar en paralelo.

Para obtener ayuda con pg_dump, consulta la referencia de pg_dump.

Próximos pasos