Поделиться через


Загрузка данных в хранилище с помощью команды COPY

Применимо к:✅ Хранилище в Microsoft Fabric

Инструкция COPY — это основной способ загрузки данных в таблицы хранилища данных. COPY выполняет высокопроизводительный прием данных из внешнего хранилища Azure с возможностью настройки параметров формата исходного файла данных, местоположения для хранения отклоненных строк, пропуска строк заголовков и других параметров.

Примечание.

Хранилище также позволяет использовать инструкцию BULK INSERT для загрузки данных. Эта COPY INTO инструкция является рекомендуемой инструкцией для нового кода приема, а BULK INSERT инструкция позволяет повторно использовать код, который вы используете в SQL Server или SQL Azure.

В этом руководстве показаны примеры приема данных для таблицы Warehouse с помощью инструкции T-SQL COPY . В нем используются примеры данных Bing COVID-19 из открытых наборов данных Azure. Дополнительные сведения об этих данных, включая ее схемы и права на использование, см. в разделе Bing COVID-19.

Примечание.

Дополнительные сведения об инструкции T-SQL COPY, включая дополнительные примеры и полный синтаксис, см. в разделе COPY (Transact-SQL).

Создание таблицы

Перед использованием инструкции COPY необходимо создать целевую таблицу. Чтобы создать целевую таблицу для этого примера, выполните следующие действия.

  1. В рабочей области Microsoft Fabric найдите и откройте хранилище.

  2. Перейдите на вкладку "Главная" и выберите "Создать SQL-запрос".

    Снимок экрана: верхний раздел рабочей области пользователя с кнопкой

  3. Чтобы создать таблицу, используемую в качестве назначения в этом руководстве, выполните следующий код:

    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
    );
    

Загрузка данных формата Parquet с помощью инструкции COPY

В первом примере мы загружаем данные с помощью источника данных Parquet. Так как эти данные общедоступны и не требуют проверки подлинности, можно легко скопировать эти данные, указав источник и назначение. Никаких сведений о проверке подлинности не требуется. Вам потребуется только указать FILE_TYPE аргумент.

Используйте следующий код для запуска инструкции COPY с источником 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'
);

Загрузка данных CSV с помощью инструкции COPY с пропуском строки заголовка

Обычно для файлов с разделиющими запятыми (CSV) используется строка заголовка, которая предоставляет имена столбцов, представляющих таблицу в CSV-файле. Инструкция COPY может копировать данные из CSV-файлов и пропускать одну или несколько строк из заголовка исходного файла.

Если вы выполнили предыдущий пример для загрузки данных из Parquet, рассмотрите возможность удаления всех данных из таблицы:

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

Чтобы загрузить данные из CSV-файла, пропуская строку заголовка, используйте следующий код:

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
);

Проверка результатов

Инструкция COPY завершается загрузкой 4 766 736 строк в вашу новую таблицу. Вы можете подтвердить успешное выполнение операции, выполнив запрос, возвращающий общее количество строк в таблице:

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

Если вы выполните оба примера, не удаляя строки между запусками, вы увидите, что результат этого запроса будет содержать в два раза больше строк. Хотя это работает для приема данных в этом случае, рассмотрите возможность удаления всех строк и приема данных только один раз, если вы собираетесь дополнительно поэкспериментировать с данными.