CREATE EXTERNAL TABLE AS SELECT (CETAS)

已完成

本單元會進一步瞭解 CREATE EXTERNAL TABLE AS SELECT (CETAS) 命令及其提供的優點。

CETAS 支援 Azure Blob 記憶體、Azure Data Lake Storage、S3 相容的物件記憶體和外部資料庫。 CETAS 也支援將檔案格式匯出為 CSV 或 Parquet 檔案。

CETAS 最強大的功能是與其他 SELECT 作業結合,例如結合 OPENROWSET 或其他外部數據表。 這種組合可讓 CETAS 以不同且彈性的方式使用。

CETAS 的使用案例

CETAS 有許多不同的使用案例,但三個主要使用案例如下:

  • 報告
  • 數據階層處理或卸除
  • 數據匯出中樞

報告

CETAS 最明顯的使用案例是使用 PolyBase 和 SQL Server 彈性的所有功能來簡化報告。 您可以連線到任何支持的數據源、數據表或檔案,並使用 T-SQL 來作和匯出結果。 例如,您可以使用 CETAS 來執行所有必要的查詢、將結果匯出為 Parquet 檔案,並將報告工具指向導出的數據,而不是將報告工具連線到 SQL Server。

數據階層處理或卸除

另一個常見案例是將 SQL Server 數據表的封存或唯讀數據匯出至遠端記憶體,但仍透過外部資料表正常查詢。 如此一來,您就只能保留 SQL Server 的作用中數據、儲存資源,但仍視需要以透明的方式存取數據。 從應用程式的觀點來看,它就像存取一般 SQL Server 數據表一樣。

例如,假設您的 order 數據表有過去幾年不會變更的歷程記錄數據,但您仍然需要完整存取。 CETAS 可協助將所有 order 數據表數據匯出至另一個位置,減少資料庫大小和必要的維護時間。 使用外部數據表時,匯出的數據的行為就像一般數據表一樣。

數據匯出中樞

藉由使用 SQL Server 2025 作為數據中樞,您可以將 CETAS 與所有現有的 PolyBase 功能結合,包括連線到 Oracle、Teradata、ODBC 或其他 SQL Server 版本等其他數據源。

CETAS 需求

若要在 SQL Server 2025 中使用 CETAS,您必須使用 sp_configure來啟用 屬性ALLOW POLYBASE EXPORT。 如需詳細資訊,請參閱下一個練習。

CETAS 許可權

若要使用 CETAS,您需要三種不同的許可權層級:

  • 存取和讀取數據源的許可權。 如果數據位於 SQL Server 外部,不論是在網路共用或其他資料庫伺服器上,SQL Server 服務帳戶都必須具有存取數據源的許可權。

  • SQL Server 2025 使用 CETAS 命令的許可權。 若要讓資料庫使用者執行 CETAS 命令,他們需要 ADMINISTER BULK OPERATIONSALTER ANY EXTERNAL DATA SOURCE 和 ALTER ANY EXTERNALFILE FORMAT 許可權。

  • 目的地的寫入許可權可寫入 CETAS 結果。 若要能夠寫入目的地、Parquet 或 CSV 檔案,使用者需要目的地的寫入許可權。 例如,若要寫入 Azure Blob 記憶體或 Azure Data Lake Storage,使用者需要這些目的地的 LISTREADCREATEWRITE 許可權。

如需 CETAS 許可權的詳細資訊,請參閱 CREATE EXTERNAL TABLE AS SELECT (CETAS) 許可權

CETAS 支援的格式

CETAS 會使用 SELECT 命令做為輸入來接收數據流,並以 CSV 或 Parquet 格式匯出結果。 輸入支援與 SELECT 命令相同的格式,包括 OPENROWSET 結果。

輸入可以是在 SQL Server 實例本機執行的數據表、透過 OPENROWSET 作業存取的網路檔案、另一個資料庫系統中的數據表,或儲存在 Azure Blob 儲存器、Azure Data Lake Storage 或 S3 相容物件記憶體上的 Delta 檔案。

CETAS T-SQL 結構

若要進一步瞭解 CETAS,您可以細分整體 T-SQL 語法。 CETAS T-SQL 結構遵循從下到下邏輯方法。 從語句結尾開始,然後以 T-SQL 語句頂端的方式運作會比較容易。

CREATE EXTERNAL TABLE 作為 SELECT 語句的 T-SQL 結構影像。

  • CETAS 結構的底部包含一個 SELECT 語句,可用來定義要匯出的數據。
  • 中間有選擇性參數可用來拒絕您不想匯出的數據。
  • 在 CETAS 語句頂端,宣告 CREATE EXTERNAL TABLE 之後,您會新增目的地位置、檔名和檔案格式的相關信息。

此結構可讓 CETAS 與任何 SELECT 語句結合,以在 SQL Server、SQL Server 內,或從任何其他支援的資料庫查詢 SQL Server 外部的數據。 SQL Server 2025 會自動建立檔名,並在多個檔案中分割結果以進行優化。 例如,導出為 Parquet 的數據表可能會根據匯出的數據大小產生數個檔案。 select 語句會定義外部數據表數據行定義和類型。

將數據表從 SQL Server 導出為 Parquet

下列範例使用 CETAS 將數據表從 SQL Server 匯出為 Parquet:

CREATE EXTERNAL TABLE ext_sales
WITH (
      LOCATION = '/cetas',
      DATA_SOURCE = s3_eds,
      FILE_FORMAT = ParquetFileFormat
     ) AS
SELECT *
FROM AdventureWorks2025.[Sales].[SalesOrderDetail];

讀取 Delta 檔案並匯出為 Parquet

下列範例會使用 CETAS 來讀取 Delta 檔案,並將其匯出為 Parquet:

CREATE EXTERNAL TABLE Delta_to_Parquet
WITH (
        LOCATION = N'/backup/sales',
        DATA_SOURCE = s3_parquet,
        FILE_FORMAT = ParquetFileFormat
      ) AS
SELECT *
FROM OPENROWSET(BULK N'/delta/sales_fy22/',
FORMAT = 'DELTA',
DATA_SOURCE = 's3_delta') AS [r];

在下一個練習中,您會使用 CETAS 來:

  • 將數據表導出為 Parquet。
  • 將非經常性數據移出資料庫到記憶體。
  • 建立外部數據表以存取儲存的數據。
  • 使用檢視、通配符搜尋、資料夾刪除和元數據作為查詢策略。