將數據從 Azure Data Lake Storage 載入 Azure Synapse Analytics 中的專用 SQL 集區
本指南概述如何使用 COPY 語句 從 Azure Data Lake Storage 載入數據。 如需跨所有驗證方法使用 COPY 語句的快速範例,請流覽下列檔: 使用專用 SQL 集區安全地載入數據。
注意
若要在 COPY 語句上提供意見反應或報告問題,請將電子郵件傳送至下列通訊組清單: sqldwcopypreview@service.microsoft.com。
- 建立目標數據表以從 Azure Data Lake Storage 載入數據。
- 建立 COPY 語句以將數據載入數據倉儲。
如果您沒有 Azure 訂用帳戶,請在開始前建立免費 Azure 帳戶。
開始之前
開始本教學課程之前,請下載並安裝最新版的 SQL Server Management Studio (SSMS)。
若要執行本教學課程,您需要:
- 專用 SQL 集區。 請參閱 建立專用 SQL 集區和查詢數據。
- Data Lake Storage 帳戶。 請參閱 開始使用 Azure Data Lake Storage。 針對此儲存器帳戶,您必須設定或指定下列其中一個認證來載入:記憶體帳戶密鑰、共用存取簽章 (SAS) 密鑰、Azure 目錄應用程式使用者,或具有記憶體帳戶適當 Azure 角色的 Microsoft Entra 使用者。
- 目前,使用 COPY 命令將資料擷取至使用新 Azure 儲存體 DNS 分割功能的 Azure 儲存體 帳戶,會導致錯誤。 在未在本教學課程中使用 DNS 分割的訂用帳戶中布建記憶體帳戶。
建立目標數據表
線上到您的專用 SQL 集區,並建立您要載入的目標數據表。 在此範例中,我們會建立產品維度數據表。
-- A: Create the target table
-- DimProduct
CREATE TABLE [dbo].[DimProduct]
(
[ProductKey] [int] NOT NULL,
[ProductLabel] [nvarchar](255) NULL,
[ProductName] [nvarchar](500) NULL
)
WITH
(
DISTRIBUTION = HASH([ProductKey]),
CLUSTERED COLUMNSTORE INDEX
--HEAP
);
建立 COPY 語句
線上到您的 SQL 專用集區並執行 COPY 語句。 如需範例的完整清單,請流覽下列檔: 使用專用SQL集區安全地載入數據。
-- B: Create and execute the COPY statement
COPY INTO [dbo].[DimProduct]
--The column list allows you map, omit, or reorder input file columns to target table columns.
--You can also specify the default value when there is a NULL value in the file.
--When the column list is not specified, columns will be mapped based on source and target ordinality
(
ProductKey default -1 1,
ProductLabel default 'myStringDefaultWhenNull' 2,
ProductName default 'myStringDefaultWhenNull' 3
)
--The storage account location where you data is staged
FROM 'https://storageaccount.blob.core.windows.net/container/directory/'
WITH
(
--CREDENTIAL: Specifies the authentication method and credential access your storage account
CREDENTIAL = (IDENTITY = '', SECRET = ''),
--FILE_TYPE: Specifies the file type in your storage account location
FILE_TYPE = 'CSV',
--FIELD_TERMINATOR: Marks the end of each field (column) in a delimited text (CSV) file
FIELDTERMINATOR = '|',
--ROWTERMINATOR: Marks the end of a record in the file
ROWTERMINATOR = '0x0A',
--FIELDQUOTE: Specifies the delimiter for data of type string in a delimited text (CSV) file
FIELDQUOTE = '',
ENCODING = 'UTF8',
DATEFORMAT = 'ymd',
--MAXERRORS: Maximum number of reject rows allowed in the load before the COPY operation is canceled
MAXERRORS = 10,
--ERRORFILE: Specifies the directory where the rejected rows and the corresponding error reason should be written
ERRORFILE = '/errorsfolder',
) OPTION (LABEL = 'COPY: ADLS tutorial');
最佳化資料行存放區壓縮
根據預設,數據表會定義為叢集數據行存放區索引。 載入完成後,某些資料列可能不會被壓縮為資料行存放區。 原因有很多。 若要深入了解,請參閱管理資料行存放區索引。
若要最佳化載入後的查詢效能和資料行存放區壓縮,請重建資料表以強制資料行存放區索引對所有資料列進行壓縮。
ALTER INDEX ALL ON [dbo].[DimProduct] REBUILD;
最佳化統計資料
最好在載入之後立即建立單一數據行統計數據。 統計數據有一些選擇。 例如,如果您在每一個數據行上建立單一數據行統計數據,可能需要很長的時間才能重建所有統計數據。 如果您知道某些數據行不會位於查詢述詞中,您可以略過在這些數據行上建立統計數據。
如果您決定要在每個資料表的每個資料行上建立單一資料行統計資料,便可以使用統計資料一文中的預存程序程式碼範例 prc_sqldw_create_stats
。
下列範例為建立統計資料的好起點。 它會在維度資料表中的每個資料行上,以及在事實資料表中的每個聯結資料行上建立單一資料行統計資料。 您之後隨時可以將單一或多個資料行統計資料新增到其他事實資料表資料行上。
成就解鎖!
您已成功將數據載入資料倉儲。 太棒了!
下一步
載入數據是使用 Azure Synapse Analytics 開發數據倉儲解決方案的第一個步驟。 查看我們的開發資源。
如需更多載入範例和參考,請檢視下列檔: