在複製活動中設定適用於 PostgreSQL 的 Azure 資料庫
本文概述如何在資料管線中使用複製活動,從適用於 PostgreSQL 的 Azure 資料庫複製資料以及將資料複製到其中。
支援的設定
對於複製活動下每個索引標籤的組態,請分別參閱下列各節。
一般
請參閱<[一般] 設定>指導,來設定 [一般] 設定索引標籤。
來源
前往 [來源] 索引標籤以設定複製活動來源。 如需詳細的組態,請參閱下列內容。
以下是三個必要的屬性:
- 連線:從連線清單中選取適用於 PostgreSQL 的 Azure 資料庫連線。 如果沒有連線,請建立一個新的適用於 PostgreSQL 的 Azure 資料庫連線。
- 連線類型:選取 [適用於 PostgreSQL 的 Azure 資料庫]。
-
使用查詢:選取 [資料表] 以從指定的資料表讀取資料,或選取 [查詢] 以使用查詢讀取資料。
如果選取 [資料表]:
資料表:從下拉式清單中選取資料表,或選取 [手動輸入] 以手動輸入來讀取資料。
如果選取 [查詢]:
查詢:指定自訂 SQL 查詢來讀取資料。 例如:
SELECT * FROM mytable
或SELECT * FROM "MyTable"
。注意
在 PostgreSQL 中,如果未加上引號,實體名稱會被視為不區分大小寫。
在 [進階] 下,可以指定下列欄位:
查詢逾時(分鐘):指定終止嘗試執行命令併產生錯誤之前的等候時間,預設值為 120 分鐘。 如果為此屬性設定參數,允許的值是時間範圍,例如 “02:00:00” (120 分鐘)。 如需詳細資訊,請參閱 CommandTimeout。
分割選項:指定用來從適用於 PostgreSQL 的 Azure 資料庫載入資料的資料分割選項。 啟用分割選項後 (即不是 [無]),從適用於 PostgreSQL 的 Azure 資料庫同時載入資料的平行處理程度,將由 [複製活動設定] 索引標籤中的 [複製平行處理原則的程度] 控制。
如果您選取 [無],則選擇不使用分割。
如果您選取資料表的實體分割:
分割名稱:指定需要複製的實體分割清單。
如果您使用查詢來取出來源資料,請在 WHERE 子句中加上
?AdfTabularPartitionName
。 如需範例,請參閱平行複製適用於 PostgreSQL 的 Azure 資料庫一節。
如果選取 [動態範圍]:
分割資料行名稱:以整數類型或日期/日期時間類型 (、
int
、smallint
、bigint
、date
、timestamp without time zone
或timestamp 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 |
分割資料行名稱 |
整數或日期/日期時間類型 (int 、smallint 、bigint 、date 、timestamp without time zone 、timestamp with time zone 或 time 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 |