Ingesta de datos en el almacén mediante la instrucción COPY

Esto se aplica a: Almacén en Microsoft Fabric

La instrucción COPY es la forma principal de ingerir datos en tablas de almacenamiento. COPY realiza una ingesta de datos de alto rendimiento desde una cuenta de almacenamiento de Azure externa, con la flexibilidad de configurar opciones de formato de archivo de origen, una ubicación para almacenar filas rechazadas, omitir filas de encabezado y otras opciones.

En este tutorial se muestran ejemplos de ingesta de datos para una tabla del almacén mediante la instrucción COPY de T-SQL. Usa los datos de ejemplo de COVID-19 de Bing de Azure Open Datasets. Para obtener más información sobre estos datos, incluidos sus derechos de esquema y de uso, consulte Bing COVID-19.

Nota:

Para obtener más información sobre la instrucción COPY de T-SQL, incluyendo más ejemplos y la sintaxis completa, consulte COPY (Transact-SQL).

Creación de una tabla

Antes de usar la instrucción COPY, es necesario crear la tabla de destino. Para crear la tabla de destino para este ejemplo, siga estos pasos:

  1. En el área de trabajo de Microsoft Fabric, busque y abra el almacén.

  2. Cambie a la pestaña Inicio y seleccione Nueva consulta SQL.

    Captura de pantalla de la sección superior del espacio de trabajo del usuario que muestra el botón Nueva consulta SQL.

  3. Para crear la tabla usada como destino en este tutorial, ejecute el código siguiente:

    CREATE TABLE [dbo].[bing_covid-19_data]
    (
        [id] [int] NULL,
        [updated] [date] NULL,
        [confirmed] [int] NULL,
        [confirmed_change] [int] NULL,
        [deaths] [int] NULL,
        [deaths_change] [int] NULL,
        [recovered] [int] NULL,
        [recovered_change] [int] NULL,
        [latitude] [float] NULL,
        [longitude] [float] NULL,
        [iso2] [varchar](8000) NULL,
        [iso3] [varchar](8000) NULL,
        [country_region] [varchar](8000) NULL,
        [admin_region_1] [varchar](8000) NULL,
        [iso_subdivision] [varchar](8000) NULL,
        [admin_region_2] [varchar](8000) NULL,
        [load_time] [datetime2](6) NULL
    );
    

Ingesta de datos de Parquet mediante la instrucción COPY

En el primer ejemplo, se cargan datos mediante un origen de Parquet. Dado que estos datos están disponibles públicamente y no requieren autenticación, puede copiarlos fácilmente especificando el origen y el destino. No se necesitan detalles de autenticación. Solo tendrá que especificar el argumento FILE_TYPE.

Use el código siguiente para ejecutar la instrucción COPY con un origen de Parquet:

COPY INTO [dbo].[bing_covid-19_data]
FROM 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet'
WITH (
    FILE_TYPE = 'PARQUET'
);

Ingesta de datos de archivos .csv mediante la instrucción COPY y la omisión de una fila de encabezado

Es habitual que los archivos de valores separados por comas (archivos .csv) tengan una fila de encabezado que proporcione los nombres de columna que representan la tabla en un archivo .csv. La instrucción COPY puede copiar datos de archivos .csv y omitir una o varias filas del encabezado del archivo de origen.

Si ejecutó el ejemplo anterior para cargar datos de Parquet, considere la posibilidad de eliminar todos los datos de la tabla:

DELETE FROM [dbo].[bing_covid-19_data];

Para cargar datos desde un archivo .csv omitiendo una fila de encabezado, use el código siguiente:

COPY INTO [dbo].[bing_covid-19_data]
FROM 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (
    FILE_TYPE = 'CSV', 
    FIRSTROW = 2
);

Comprobar los resultados

La instrucción COPY se completa mediante la ingesta de 4 766 736 filas en la nueva tabla. Para confirmar que la operación se ejecutó correctamente, ejecute una consulta que devuelva el número total de filas de la tabla:

SELECT COUNT(*) FROM [dbo].[bing_covid-19_data];

Si ejecutó ambos ejemplos sin eliminar las filas entre ejecuciones, verá el resultado de esta consulta con el doble de filas. Aunque esto funciona para la ingesta de datos de este caso, considere la posibilidad de eliminar todas las filas e ingerir datos solo una vez si piensa experimentar con estos datos.