若要瀏覽中繼資料樹狀目錄,請遵循重複模式:在層級匯入中繼資料,然後描述該層級的子項。重複此程序以深入了解樹狀結構。
首先,使用可識別最上層中繼資料模型的選擇規則呼叫 start-metadata-model-import。在 中包含 server-name和最上層 category-name( Databases或 Schemas,取決於資料庫引擎)object-locator。如需選取規則結構的詳細資訊,請參閱 DMS 結構描述轉換中的選取規則。
aws dms start-metadata-model-import \
--migration-project-identifier "my-migration-project" \
--origin SOURCE \
--refresh \
--selection-rules '{"rules":[{"rule-type":"selection","rule-id":"1",
"rule-name":"1","object-locator":{"server-name":"my-server","category-name":"top-level-category"},"rule-action":"explicit"}]}'
匯入請求是非同步的。使用 describe-metadata-model-imports 在瀏覽之前檢查狀態。使用 傳回RequestIdentifier值的request-id篩選條件start-metadata-model-import來尋找特定匯入:
aws dms describe-metadata-model-imports \
--migration-project-identifier "my-migration-project" \
--filters Name=request-id,Values=request-identifier
匯入完成後,請呼叫 describe-metadata-model-children 來擷取該層級的子系:
aws dms describe-metadata-model-children \
--migration-project-identifier "my-migration-project" \
--origin SOURCE \
--selection-rules '{"rules":[{"rule-type":"selection","rule-id":"1",
"rule-name":"1","object-locator":{"server-name":"my-server"},
"rule-action":"explicit"}]}'
回應中的每個子項都包含一個SelectionRules欄位。將這些選取規則傳遞至下一個匯入,並描述呼叫以深入探索:
{
"MetadataModelChildren": [
{
"MetadataModelName": "Schemas",
"SelectionRules": "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"object-locator\":{\"server-name\":\"src-database-server\",\"category-name\":\"Schemas\"},\"rule-action\":\"explicit\"}]}"
}
]
}
若要深入探索下一個層級,請使用先前describe-metadata-model-children呼叫傳回的選擇規則在該層級匯入,然後描述其子系:
aws dms start-metadata-model-import \
--migration-project-identifier "my-migration-project" \
--origin SOURCE \
--refresh \
--selection-rules 'selection-rules-from-previous-response'
在描述子項之前,請先使用 檢查其狀態,以確保匯入已完成describe-metadata-model-imports。然後呼叫 describe-metadata-model-children:
aws dms describe-metadata-model-children \
--migration-project-identifier "my-migration-project" \
--origin SOURCE \
--selection-rules 'selection-rules-from-previous-response'
回應會傳回該層級的子項,每個子項都有自己的選取規則。將這些選取規則傳遞至下一個匯入,並描述呼叫以繼續深入探索樹狀結構。
{
"MetadataModelChildren": [
{
"MetadataModelName": "child-name",
"SelectionRules": "selection-rules-JSON-string"
}
]
}
相較於完整匯入,使用 --refresh
使用 從資料庫--refresh重新載入特定中繼資料模型。這也會載入其直接子系的名稱。您可以使用 列出這些子系describe-metadata-model-children,但若要進一步描述或瀏覽,您必須在子系層級執行另一個匯入。
若要載入整個子樹狀結構 (例如結構描述、資料庫或資料表或程序等特定類別中的所有物件),請省略 --refresh 旗標,並在選取規則include中rule-action變更為 :
aws dms start-metadata-model-import \
--migration-project-identifier "my-migration-project" \
--origin SOURCE \
--selection-rules '{"rules":[{"rule-type":"selection","rule-id":"1",
"rule-name":"1","object-locator":{...},
"rule-action":"include"}]}'
對於大型結構描述,載入完整的子樹狀目錄可能需要幾分鐘或數小時的時間,並對資料庫進行載入。針對互動式探勘,請視需要使用 --refresh並鑽研特定分支。
若要擷取中繼資料模型的 SQL 定義,請使用 describe-metadata-model。傳遞從上一個describe-metadata-model-children回應識別特定中繼資料模型的選擇規則:
aws dms describe-metadata-model \
--migration-project-identifier "my-migration-project" \
--origin SOURCE \
--selection-rules 'selection-rules-for-target-object'
回應包含中繼資料模型名稱、類型和 SQL 定義:
{
"MetadataModelName": "employees",
"MetadataModelType": "table",
"Definition": "CREATE TABLE hr.employees(\n id integer NOT NULL,\n name varchar(100),\n department_id integer\n);"
}
某些中繼資料模型可能不會填入 Definition 欄位,例如結構描述和類別。
轉換來源中繼資料模型之後,目標樹狀目錄中會提供轉換後的定義。有三種方法可以擷取它們。
從來源回應使用目標選取規則
當您在轉換後描述來源中繼資料模型時,回應會包含具有目標選取規則TargetMetadataModels的欄位:
{
"MetadataModelName": "employees",
"MetadataModelType": "table",
"TargetMetadataModels": [
{
"MetadataModelName": "employees",
"SelectionRules": "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"object-locator\":{\"server-name\":\"tgt-database-server\",\"schema-name\":\"hr\",\"table-name\":\"employees\",\"table-type\":\"table\"},\"rule-action\":\"explicit\"}]}"
}
],
"Definition": "CREATE TABLE hr.employees(\n id integer NOT NULL,\n name varchar(100),\n department_id integer\n);"
}
describe-metadata-model 使用 將選取規則從 傳遞TargetMetadataModels至 --origin TARGET:
aws dms describe-metadata-model \
--migration-project-identifier "my-migration-project" \
--origin TARGET \
--selection-rules 'selection-rules-from-TargetMetadataModels'
回應在目標引擎語法中包含轉換後的 SQL 定義:
{
"MetadataModelName": "employees",
"MetadataModelType": "table",
"Definition": "CREATE TABLE hr.employees (\nid INT NOT NULL,\nname VARCHAR(100) DEFAULT NULL,\ndepartment_id INT DEFAULT NULL,\nPRIMARY KEY (id)\n);"
}
使用 get-target-selection-rules
您可以使用 get-target-selection-rules 直接將來源選取規則轉換為其目標對等項,而無需先describe-metadata-model呼叫來源:
aws dms get-target-selection-rules \
--migration-project-identifier "my-migration-project" \
--selection-rules 'source-selection-rules'
直接導覽目標樹狀目錄
您也可以使用 ,以與來源樹相同的方式瀏覽目標樹狀目錄--origin TARGET。當您想要探索所有轉換的物件而不從來源開始時,這會很有用。