Importa y exporta datos en formato CSV

En esta página, se describe cómo exportar datos de Cloud Spanner a archivos CSV o cómo importar datos de archivos CSV a una base de datos de Cloud Spanner.

Para el proceso, se usa Dataflow. Puedes exportar datos de Cloud Spanner a un depósito de Cloud Storage o importar datos a Cloud Spanner de un depósito de Cloud Storage que contiene un archivo de manifiesto JSON y un conjunto de archivos CSV.

Antes de comenzar

Para importar o exportar una base de datos de Cloud Spanner, primero debes habilitar las API de Cloud Spanner, Cloud Storage, Compute Engine y Dataflow:

Habilita lasAPI

También necesitas una cuota suficiente y los permisos necesarios de Cloud IAM.

Requisitos de cuota

Los requisitos de cuota para los trabajos de importación o exportación, mediante el servicio de Google Cloud, son los siguientes:

  • Cloud Spanner: Debes tener suficientes nodos para admitir la cantidad de datos que deseas importar. No se requieren nodos adicionales para importar o exportar una base de datos, aunque es posible que debas agregar más nodos a fin de que el trabajo se complete en un tiempo razonable. Consulta la sección sobre cómo optimizar trabajos para obtener más detalles.
  • Cloud Storage: Para importar, debes tener un depósito que contenga los archivos exportados con anterioridad. Si deseas exportar, debes crear un depósito para los archivos exportados si aún no tienes uno. Puedes hacerlo en Cloud Console, ya sea a través de la página de Cloud Storage o mientras crees la exportación en la página de Cloud Spanner. No es necesario que establezcas un tamaño para tu depósito.
  • Dataflow: Los trabajos de importación o exportación están sujetos a las mismas cuotas de Compute Engine de direcciones IP, uso del disco y CPU que otros trabajos de Dataflow.
  • Compute Engine: Antes de ejecutar el trabajo de importación o exportación, debes establecer las cuotas iniciales para Compute Engine, que Dataflow usa. Estas cuotas representan la cantidad máxima de recursos que permites que Dataflow use para tu trabajo. Los valores iniciales recomendados son los siguientes:

    • CPU: 200
    • Direcciones IP en uso: 200
    • Disco persistente estándar: 50 TB

    Por lo general, no es necesario hacer ningún otro ajuste. Dataflow proporciona ajuste de escala automático para que solo pagues por los recursos reales que se usaron durante la importación o exportación. Si tu trabajo puede usar más recursos, la IU de Dataflow muestra un ícono de advertencia. El trabajo debería completarse incluso si hay un ícono de advertencia.

Requisitos de Cloud IAM

Para importar o exportar una base de datos, también necesitas tener funciones de Cloud IAM con permisos suficientes para usar todos los servicios involucrados en un trabajo de importación o exportación. Para obtener información sobre cómo otorgar permisos y funciones, consulta la página sobre cómo aplicar funciones de IAM.

Para importar o exportar una base de datos, necesitas las siguientes funciones:

  • A nivel de proyecto de Google Cloud:
    • Visualizador de Cloud Spanner
    • Administrador de Dataflow
    • Administrador de almacenamiento
  • A nivel de la base de datos de Cloud Spanner o de la instancia, o a nivel de proyecto de Google Cloud:
    • Lector de Cloud Spanner
    • Administrador de base de datos de Cloud Spanner (obligatorio solo para trabajos de importación)

Exporta datos de Cloud Spanner a archivos CSV

Si deseas exportar datos de Cloud Spanner a archivos CSV en Cloud Storage, sigue las instrucciones para usar la herramienta de línea de comandos de gcloud a fin de ejecutar un trabajo con la plantilla Cloud Spanner a Cloud Storage Text.

También puedes consultar la información de este documento sobre cómo ver o solucionar problemas de trabajos, cómo optimizar trabajos lentos y factores que afectan el rendimiento del trabajo.

Importa datos de archivos CSV a Cloud Spanner

El proceso para importar datos de archivos CSV incluye los siguientes pasos:

  • Exporta tus datos a archivos CSV y almacena esos archivos en Cloud Storage.
  • Crea un archivo de manifiesto JSON y almacénalo junto con tus archivos CSV.
  • Crea tablas de destino vacías en tu base de datos de Cloud Spanner o asegúrate de que los tipos de datos para las columnas en tus archivos CSV coincidan con las columnas correspondientes en tus tablas existentes.
  • Ejecuta tu trabajo de importación.

Exporta datos de una base de datos que no es de Cloud Spanner a archivos CSV

El proceso de importación incluye datos de archivos CSV ubicados en un depósito de Cloud Storage. Puedes exportar datos en formato CSV desde cualquier fuente.

Cuando exportes tus datos, ten en cuenta lo siguiente:

  • Los archivos de texto que se importarán deben estar en formato CSV.
  • Los datos deben coincidir con uno de los siguientes tipos:

    • INT64
    • FLOAT64
    • BOOL
    • STRING
    • DATE
    • TIMESTAMP
  • No es necesario que incluyas ni generes metadatos cuando exportes los archivos CSV.

  • No es necesario que sigas ninguna convención de nombres específica para tus archivos.

Si no exportas tus archivos directamente a Cloud Storage, debes subir los archivos CSV a un depósito de Cloud Storage.

Crea un archivo de manifiesto JSON

También debes crear un archivo de manifiesto con una descripción JSON de los archivos que deseas importar y colocarlo en el mismo depósito de Cloud Storage en el que almacenaste tus archivos CSV. Este archivo de manifiesto contiene un arreglo tables que muestra el nombre y las ubicaciones de los archivos de datos para cada tabla.

El formato del archivo de manifiesto corresponde al siguiente tipo de mensaje, que se muestra en formato de búfer de protocolo:

message ImportManifest {
  // The per-table import manifest.
  message TableManifest {
    // Required. The name of the destination table.
    string table_name = 1;
    // Required. The CSV files to import. This value can be either a filepath or a glob pattern.
    repeated string file_patterns = 2;
    // The schema for a table column.
    message Column {
      // Required for each Column that you specify. The name of the column in the
      // destination table.
      string column_name = 1;
      // Required for each Column that you specify. The type of the column. Supports the
      // following data types: BOOL, INT64, FLOAT64, STRING, DATE, and TIMESTAMP.
      string type_name = 2;
    }
    // Optional. The schema for the table columns.
    repeated Column columns = 3;
  }
  // Required. The TableManifest of the tables to be imported.
  repeated TableManifest tables = 1;
}

En el siguiente ejemplo, se muestra un archivo de manifiesto para importar tablas denominadas Albums y Singers. La tabla Albums usa el esquema de columna que el trabajo recupera de la base de datos, y la tabla Singers usa el esquema que especifica el archivo de manifiesto:

{
  "tables": [
    {
      "table_name": "Albums",
      "file_patterns": [
        "gs://bucket1/Albums_1.csv",
        "gs://bucket1/Albums_2.csv"
      ]
    },
    {
      "table_name": "Singers",
      "file_patterns": [
        "gs://bucket1/Singers*.csv"
      ],
      "columns": [
        {"column_name": "SingerId", "type_name": "INT64"},
        {"column_name": "FirstName", "type_name": "STRING"},
        {"column_name": "LastName", "type_name": "STRING"}
      ]
    }
  ]
}

Crea la tabla para tu base de datos de Cloud Spanner

Antes de ejecutar la importación, debes crear las tablas de destino en tu base de datos de Cloud Spanner. Si la tabla de destino de Cloud Spanner ya tiene un esquema, las columnas especificadas en el archivo de manifiesto deben tener los mismos tipos de datos que las columnas correspondientes en el esquema de la tabla de destino.

Ejecuta un trabajo de importación de Dataflow con gcloud

Si deseas iniciar el trabajo de importación, sigue las instrucciones para usar la herramienta de línea de comandos de gcloud a fin de ejecutar un trabajo con la plantilla CSV a Cloud Spanner.

Después de iniciar un trabajo de importación, puedes ver los detalles del trabajo en Cloud Console.

Cuando el trabajo de importación se complete, agrega los índices secundarios necesarios.

Elige una región para tu trabajo de importación

Se recomienda elegir una región diferente en función de si el depósito de Cloud Storage usa una configuración regional o multirregional. Para evitar los cargos de salida de red, elige una región que se superponga con la ubicación del depósito de Cloud Storage.

Ubicaciones de depósitos regionales

Si la ubicación del depósito de Cloud Storage es regional, elige la misma región para tu trabajo de importación si esa región está disponible a fin de aprovechar el uso gratuito de la red.

Si la misma región no está disponible, se aplicarán cargos de salida. Consulta los precios de salida de red de Cloud Storage para elegir la región que tenga los cargos de salida de red más bajos.

Ubicaciones del depósito multirregional

Si la ubicación de tu depósito de Cloud Storage es multirregional, elige una de las regiones que conforman la ubicación multirregional para aprovechar el uso gratuito de red.

Si una región superpuesta no está disponible, se aplicarán los cargos de salida. Consulta los precios de salida de red de Cloud Storage para elegir una región que incurrirá en los cargos de salida de red más bajos.

Visualiza o soluciona problemas de trabajos en la IU de Dataflow

Después de iniciar un trabajo de importación o exportación, puedes ver los detalles del trabajo, incluidos los registros, en la sección de Dataflow de Cloud Console.

Visualiza los detalles del trabajo de Dataflow

Para ver los detalles de un trabajo en ejecución, sigue estos pasos:

  1. Navega hasta la página Detalles de la base de datos de la base de datos.
  2. Haz clic en Ver detalles del trabajo en Dataflow en el mensaje de estado del trabajo, que tiene un aspecto similar al siguiente:

    Mensaje de estado del trabajo en curso

    Cloud Console muestra los detalles del trabajo de Dataflow.

Para ver un trabajo que ejecutaste hace poco tiempo, haz lo siguiente:

  1. Navega hasta la página Detalles de la base de datos de la base de datos.
  2. Haz clic en la pestaña Importar/Exportar.
  3. Haz clic en el nombre de tu trabajo en la lista.

    Cloud Console muestra los detalles del trabajo de Dataflow.

Para ver un trabajo que ejecutaste hace más de una semana, sigue estos pasos:

  1. Ve a la página Trabajos de Dataflow en Cloud Console.

    Ir a la página Trabajos

  2. Busca tu trabajo en la lista y haz clic sobre su nombre.

    Cloud Console muestra los detalles del trabajo de Dataflow.

Visualiza registros de Dataflow para tu trabajo

Para ver los registros de un trabajo de Dataflow, navega hasta la página de detalles del trabajo como se describió con anterioridad y, luego, haz clic en Registros a la derecha del nombre del trabajo.

Si un trabajo falla, busca errores en los registros. Si hay errores, el recuento de errores se muestra junto a Registros (Logs):

Ejemplo de recuento de errores junto al botón Registros (Logs)

Para ver los errores del trabajo, sigue estos pasos:

  1. Haz clic en el recuento de errores junto a Registros (Logs).

    Cloud Console muestra los registros del trabajo. Es posible que debas desplazarte para ver los errores.

  2. Identifica las entradas con el ícono de error Ícono de error.

  3. Haz clic en una entrada de registro individual para expandir su contenido.

Para obtener más información sobre cómo solucionar problemas de trabajos de Dataflow, consulta Solución de problemas y depuración.

Optimiza trabajos de importación o exportación que se ejecutan con lentitud

Si seguiste las sugerencias de la configuración inicial, por general, no se debe realizar ningún otro ajuste. Si tu trabajo se ejecuta a poca velocidad, existen otras optimizaciones que puedes probar:

  • Optimiza el trabajo y la ubicación de los datos: Ejecuta tu trabajo de Dataflow en la misma región donde se encuentran tu instancia de Cloud Spanner y el depósito de Cloud Storage.

  • Garantiza recursos suficientes de Dataflow: Si las cuotas relevantes de Compute Engine limitan los recursos de tu trabajo de Dataflow, la página de Dataflow del trabajo en Google Cloud Console muestra un ícono de advertencia Ícono de advertencia y mensajes de registro:

    Captura de pantalla de la advertencia de límite de cuota

    En esta situación, aumentar las cuotas para CPU, direcciones IP en uso y el disco persistente estándar podría acortar el tiempo de ejecución del trabajo, pero se podrían generar más cargos de Compute Engine.

  • Comprueba el uso de CPU de Cloud Spanner: Si ves que el uso de CPU de la instancia supera el 65%, puedes aumentar la cantidad de nodos en esa instancia. Los nodos adicionales agregan más recursos de Cloud Spanner, por lo que el trabajo debería acelerarse, pero se te cobrarán más cargos de Cloud Spanner.

Factores que afectan el rendimiento del trabajo de importación o exportación

Varios factores influyen en el tiempo que lleva completar un trabajo de importación o exportación.

  • Tamaño de la base de datos de Cloud Spanner: Procesar más datos requiere más tiempo y recursos.

  • Esquema de la base de datos de Cloud Spanner (incluidos los índices): La cantidad de tablas, el tamaño de las filas y la cantidad de índices secundarios influyen en el tiempo necesario para ejecutar un trabajo de importación o exportación.

  • Ubicación de los datos: Los datos se transfieren entre Cloud Spanner y Cloud Storage mediante Dataflow. Lo ideal es que los tres componentes se ubiquen en la misma región. Si los componentes no están en la misma región, mover los datos entre las regiones hace que la ejecución del trabajo sea más lenta.

  • Cantidad de trabajadores de Dataflow: Mediante el ajuste de escala automático, Dataflow elige la cantidad de trabajadores en función de la cantidad de trabajo que se debe realizar. Sin embargo, la cantidad de trabajadores estará limitada por las cuotas de las CPU, las direcciones IP en uso y el disco persistente estándar. La IU de Dataflow muestra un ícono de advertencia si se alcanzan los límites de cuota. En esta situación, el progreso es más lento, pero el trabajo se completará de todos modos.

  • Carga existente en Cloud Spanner: Un trabajo de importación agrega una carga de CPU significativa en una instancia de Cloud Spanner. Por lo general, un trabajo de exportación agrega una carga ligera en una instancia de Cloud Spanner. Si la instancia ya tiene una carga sustancial existente, el trabajo se ejecutará más lento.

  • Cantidad de nodos de Cloud Spanner: Si el uso de CPU de la instancia supera el 65%, el trabajo se ejecutará más lento.