使用 COPY 語句將數據內嵌至倉儲

適用於: Microsoft Fabric 中的倉儲

COPY 語句是將數據內嵌至 Warehouse 數據表的主要方式。 COPY 會從外部 Azure 記憶體帳戶執行高輸送量數據擷取,並彈性地設定來源檔格式選項、儲存遭拒數據列的位置、略過標頭數據列和其他選項。

本教學課程示範使用 T-SQL COPY 語句之 Warehouse 數據表的數據擷取範例。 它會使用來自 Azure 開放數據集的 Bing COVID-19 範例數據。 如需此數據的詳細資訊,包括其架構和許可權,請參閱 Bing COVID-19

注意

若要深入瞭解 T-SQL COPY 語句,包括更多範例和完整語法,請參閱 COPY(Transact-SQL)。

建立表格

使用 COPY 語句之前,必須先建立目的地數據表。 若要建立此範例的目的地數據表,請使用下列步驟:

  1. 在您的 Microsoft Fabric 工作區中,尋找並開啟您的倉儲。

  2. 切換至 [ 首頁] 索引標籤,然後選取 [ 新增 SQL 查詢]。

    使用者工作區頂端區段的螢幕快照,其中顯示 [新增 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
    );
    

使用 COPY 語句內嵌 Parquet 數據

在第一個範例中,我們會使用 Parquet 來源載入數據。 由於此數據可供公開使用,且不需要驗證,因此您可以藉由指定來源和目的地,輕鬆地複製此數據。 不需要驗證詳細數據。 您只需要指定 FILE_TYPE 自變數。

使用下列程式代碼搭配 Parquet 來源執行 COPY 語句:

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

使用 COPY 語句擷取 CSV 數據,並略過標頭數據列

逗號分隔值 (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];

如果您執行這兩個範例而不刪除執行之間的資料列,您會看到此查詢的結果,其數據列數目是兩倍。 雖然這適用於此案例中的數據擷取,但當您要進一步實驗此數據時,請考慮刪除所有數據列和擷取數據一次。