共用方式為


使用 COPY 陳述式將資料內嵌至倉儲

適用於✅:Microsoft Fabric 的倉儲

COPY 陳述式是將資料內嵌至倉儲資料表的主要方式。 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];

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