共用方式為


在複製活動中設定適用於 PostgreSQL 的 Azure 資料庫

本文概述如何在資料管線中使用複製活動,從適用於 PostgreSQL 的 Azure 資料庫複製資料以及將資料複製到其中。

支援的設定

對於複製活動下每個索引標籤的組態,請分別參閱下列各節。

一般

請參閱<[一般] 設定>指導,來設定 [一般] 設定索引標籤。

來源

前往 [來源] 索引標籤以設定複製活動來源。 如需詳細的組態,請參閱下列內容。

螢幕擷取畫面,其中顯示 [來源] 索引標籤和屬性清單。

以下是三個必要的屬性:

  • 連線:從連線清單中選取適用於 PostgreSQL 的 Azure 資料庫連線。 如果沒有連線,請建立一個新的適用於 PostgreSQL 的 Azure 資料庫連線。
  • 連線類型:選取 [適用於 PostgreSQL 的 Azure 資料庫]
  • 使用查詢:選取 [資料表] 以從指定的資料表讀取資料,或選取 [查詢] 以使用查詢讀取資料。
    • 如果選取 [資料表]

      • 資料表:從下拉式清單中選取資料表,或選取 [手動輸入] 以手動輸入來讀取資料。

        螢幕擷取畫面,其中顯示 [使用查詢] – [資料表]。

    • 如果選取 [查詢]

      • 查詢:指定自訂 SQL 查詢來讀取資料。 例如:SELECT * FROM mytableSELECT * FROM "MyTable"

        注意

        在 PostgreSQL 中,如果未加上引號,實體名稱會被視為不區分大小寫。

        螢幕擷取畫面,其中顯示 [使用查詢] - [查詢]。

在 [進階] 下,可以指定下列欄位:

  • 查詢逾時(分鐘):指定終止嘗試執行命令併產生錯誤之前的等候時間,預設值為 120 分鐘。 如果為此屬性設定參數,允許的值是時間範圍,例如 “02:00:00” (120 分鐘)。 如需詳細資訊,請參閱 CommandTimeout

  • 分割選項:指定用來從適用於 PostgreSQL 的 Azure 資料庫載入資料的資料分割選項。 啟用分割選項後 (即不是 [無]),從適用於 PostgreSQL 的 Azure 資料庫同時載入資料的平行處理程度,將由 [複製活動設定] 索引標籤中的 [複製平行處理原則的程度] 控制。

    如果您選取 [無],則選擇不使用分割。

    如果您選取資料表的實體分割

    如果選取 [動態範圍]

    • 分割資料行名稱:以整數類型或日期/日期時間類型 (intsmallintbigintdatetimestamp without time zonetimestamp with time zone) 指定來源資料行的名稱,供平行複製的定界分割使用。time without time zone 如果未指定,則會自動偵測資料表的主索引鍵作為分割資料行。

      如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?AdfRangePartitionColumnName。 如需範例,請參閱平行複製適用於 PostgreSQL 的 Azure 資料庫一節。

    • 分割上限:指定要複製資料的分割資料行的最大值。

      如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?AdfRangePartitionUpbound。 如需範例,請參閱平行複製適用於 PostgreSQL 的 Azure 資料庫一節。 .

    • 分割下限:指定要複製資料的分割資料行的最小值。

      如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?AdfRangePartitionLowbound。 如需範例,請參閱平行複製適用於 PostgreSQL 的 Azure 資料庫一節。

      螢幕擷取畫面,其中顯示當選取 [動態範圍] 時的組態。

  • 其他資料行:新增其他資料行來儲存來源檔案的相對路徑或靜態值。 後者支援運算式。

Destination

前往 [目的地] 索引標籤以設定複製活動目的地。 如需詳細的組態,請參閱下列內容。

螢幕擷取畫面,其中顯示 [目的地] 索引標籤和屬性清單。

以下是三個必要的屬性:

  • 連線:從連線清單中選取適用於 PostgreSQL 的 Azure 資料庫連線。 如果沒有連線,請建立新的適用於 PostgreSQL 的 Azure 資料庫連線。
  • 連線類型:選取 [適用於 PostgreSQL 的 Azure 資料庫]
  • 資料表:請從下拉式清單中選擇資料表,或選擇 手動輸入 以輸入資料。

在 [進階] 下,可以指定下列欄位:

  • 寫入方式:指定用來將資料寫入適用於 PostgreSQL 的 Azure 資料庫的方法。 從 [複製命令] (預設值,效能更高) 和 [大量插入] 中選取。

  • 複製前指令碼:為複製活動指定一個 SQL 查詢,將在每次執行時將資料寫入到適用於 PostgreSQL 的 Azure 資料庫前執行此查詢。 您可以使用此屬性來清除預先載入的資料。

  • 寫入批次逾時:在逾時前等待批次插入作業完成的時間。允許的值為時間範圍。 預設值為 "00:30:00" (30 分鐘)。

  • 寫入批次大小:指定每個批次載入適用於 PostgreSQL 的 Azure 資料庫的資料列數目。 允許的值為代表資料列數目的整數。 預設值為 1,000,000。

對應

對於 [對應] 索引標籤組態,請參閱<在 [對應] 索引標籤下設定對應>。

設定

對於 [設定] 索引標籤組態,請參閱<在 [設定] 索引標籤下進行其他設定>。

從適用於 PostgreSQL 的 Azure 資料庫平行複製資料

在複製活動中,適用於 PostgreSQL 的 Azure 資料庫連接器提供內建的資料分割,以平行複製資料。 您可以在複製活動的 [來源] 索引標籤上找到資料分割選項。

當您啟用分割複本時,複製活動會平行查詢適用於 PostgreSQL 的 Azure 資料庫來源,以依分割區來載入資料。 平行程度由 [複製活動設定] 索引標籤中的 [複製平行處理原則的程度] 設定所控制。例如,如果將 [複製平行處理原則的程度] 設定為四,服務會根據指定的分割選項和設定同時產生和執行四個查詢,而每個查詢都會從適用於 PostgreSQL 的 Azure 資料庫擷取部分資料。

建議您啟用平行複製與資料分割,特別是從適用於 PostgreSQL 的 Azure 資料庫資料庫載入大量資料時。 以下針對各種情節的建議設定。 將資料複製到以檔案為基礎的資料存放區時,建議分成多個檔案來寫入資料夾 (僅指定資料夾名稱),這樣效能會比寫入單一檔案更好。

案例 建議的設定
使用實體分割區從大型資料表完整載入。 分割選項:資料表的實體分割區。

在執行期間,服務會自動偵測實體分割區,並依分割區複製資料。
從大型資料表完整載入,不含實體分割區,同時在資料分割時包含整數資料行。 分割選項:動態範圍。
分割資料行:指定用來分割資料的資料行。 如果未指定,則會使用主索引鍵資料行。
使用自訂查詢載入大量資料,包含實體分割區。 分割選項:資料表的實體分割區。
查詢SELECT * FROM ?AdfTabularPartitionName WHERE <your_additional_where_clause>
分割區名稱:指定要從中複製資料的分割區名稱。 如果未指定,服務會自動偵測您在 PostgreSQL 資料集中指定的資料表上的實體分割區。

在執行期間,服務會以實際的分割區名稱取代 ?AdfTabularPartitionName,並傳送至適用於 PostgreSQL 的 Azure 資料庫。
使用自訂查詢載入大量資料,不含實體分割區,同時包含整數資料行用於資料分割。 分割選項:動態範圍。
查詢SELECT * FROM ?AdfTabularPartitionName WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>
分割資料行:指定用來分割資料的資料行。 您可以按照整數或日期/日期時間資料類型的資料行來分割。
分割上限分割下限:指定是否想要依據分割資料行篩選,只擷取下限範圍和上限範圍之間的資料。

在執行期間,服務會將 ?AdfRangePartitionColumnName?AdfRangePartitionUpbound?AdfRangePartitionLowbound 取代為每個分割區的實際資料行名稱和值範圍,並傳送至適用於 PostgreSQL 的 Azure 資料庫。
例如,如果分割資料行 "ID" 已設定下限 1 和上限 80,而平行複製設定為 4,則服務會分成 4 個分割區來取出資料。 識別碼的範圍分別為 [1,20]、[21, 40]、[41, 60] 和 [61, 80]。

使用分割區選項載入資料的最佳做法:

  • 選擇獨特的資料行作為分割資料行 (例如主索引鍵或唯一索引鍵) 以避免資料扭曲。
  • 如果資料表有內建分割區,請使用分割選項「資料表的實體分割區」,以獲得更佳的效能。

資料表摘要

下列資料表包含有關適用於 PostgreSQL 的 Azure 資料庫中複製活動的詳細資訊。

來源資訊

名稱 描述: 必要 JSON 指令碼屬性
[連接] 與來源資料存放區的連線。 <適用於 PostgreSQL 的 Azure 資料庫連線> 必要 connection
連線類型 您的來源連線類型。 適用於 PostgreSQL 的 Azure 資料庫 必要 /
使用查詢 讀取資料的方式。 套用 [資料表] 以從指定的資料表讀取資料,或套用 [查詢] 以使用查詢讀取資料。 資料表
查詢
必要 • typeProperties (在 typeProperties ->source 下)
  - 結構描述
  - 資料表
• 查詢
查詢逾時 (分鐘) 終止嘗試執行命令並產生錯誤之前的等候時間,預設值為120分鐘。 如果為此屬性設定參數,允許的值是時間範圍,例如 “02:00:00” (120 分鐘)。 如需詳細資訊,請參閱 CommandTimeout 時間範圍 不必要 queryTimeout
分割名稱 需要複製的實體分割區清單。 如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?AdfTabularPartitionName <您的分割名稱> 不必要 partitionNames
分割資料行名稱 整數或日期/日期時間類型 (intsmallintbigintdatetimestamp without time zonetimestamp with time zonetime without time zone) 的來源資料行的名稱,供平行複製的定界分割使用。 如果未指定,則會自動偵測資料表的主索引鍵作為分割資料行。 <您的分割資料行名稱> 不必要 partitionColumnName
分割上限 要複製資料的分割資料行的最大值。如果您使用查詢來擷取來源資料,請在 WHERE 子句中掛勾 ?AdfRangePartitionUpbound <您的分割上限> 不必要 partitionUpperBound
分割下限 要複製資料的分割資料行的最小值。如果您使用查詢來擷取來源資料,請在 WHERE 子句中掛勾 ?AdfRangePartitionLowbound <您的分割下限> 不必要 partitionLowerBound
其他資料行 新增其他資料行來儲存來源檔案的相對路徑或靜態值。 後者支援運算式。 • 名稱
• 值
不必要 additionalColumns:
• 名稱
• 值

目的地資訊

名稱 描述: 必要 JSON 指令碼屬性
[連接] 與目的地資料存放區的連線。 <適用於 PostgreSQL 的 Azure 資料庫連線> 必要 connection
連線類型 您的目的地連線類型。 適用於 PostgreSQL 的 Azure 資料庫 必要 /
Table 要寫入資料的目的地資料表。 <目的地資料表的名稱> 必要 typeProperties (在 typeProperties ->sink 下):
  - 結構描述
  - 資料表
寫入方法 用來將資料寫入適用於 PostgreSQL 的 Azure 資料庫的方法。 複製命令 (預設值)
大量插入
不必要 writeMethod:
• CopyCommand
• BulkInsert
複製前指令碼 為複製活動指定的一個 SQL 查詢,將在每次執行時將資料寫入到適用於 PostgreSQL 的 Azure 資料庫前執行此查詢。 您可以使用此屬性來清除預先載入的資料。 <複製前指令碼> 不必要 preCopyScript
寫入批次逾時 在逾時前等待批次插入作業完成的時間。 時間範圍
(預設值為 00:30:00 - 30 分鐘)
不必要 writeBatchTimeout
寫入批次大小 每個批次載入適用於 PostgreSQL 的 Azure 資料庫的資料列數目。 整數
(預設值為 1,000,000)
不必要 writeBatchSize