使用 COPY 陳述式將資料內嵌至倉儲
適用於✅:Microsoft Fabric 的倉儲
COPY 陳述式是將資料內嵌至倉儲資料表的主要方式。 COPY 會從外部 Azure 儲存體帳戶執行高輸送量資料擷取,並彈性地設定來源檔案格式選項、用於儲存遭拒資料列的位置、略過標頭資料列和其他選項。
本教學課程示範使用 T-SQL COPY 陳述式之 Warehouse 資料表的資料擷取範例。 它使用來自 Azure 開放資料集的 Bing COVID-19 範例資料。 如需此資料的詳細資料,包括結構描述和使用權限,請參閱 Bing COVID-19。
注意
若要深入了解 T-SQL COPY 陳述式,包括更多範例和完整語法,請參閱 COPY (Transact-SQL)。
建立表格
使用 COPY 陳述式之前,需要先建立目的地資料表。 若要建立此範例的目的地資料表,請使用下列步驟:
在 Microsoft Fabric 工作區中,尋找並開啟您的倉儲。
切換至 [首頁] 索引標籤,然後選取 [新增 SQL 查詢]。
若要在本教學課程中建立用作目的地的資料表,請執行下列程式碼:
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];
如果您執行這兩個範例而不刪除執行之間的資料列,您會看到此查詢的結果,其資料列數目是兩倍。 雖然這適用於此案例中的資料擷取,但當您要進一步實驗此資料時,請考慮刪除所有資料列和內嵌資料一次。