View a markdown version of this page

DMS Schema Conversion の選択ルール - AWS データベース移行サービス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

DMS Schema Conversion の選択ルール

DMS Schema Conversion は、データベーススキーマをあるエンジンから別のエンジンに変換します。選択ルールを使用して、評価、変換、エクスポートなどのオペレーション中に DMS Schema Conversion が動作するデータベースオブジェクトを制御します。選択ルールは、 SelectionRulesパラメータを (または AWS CLI --selection-rulesで) 渡す JSON オブジェクトです。選択ルールがない場合、オペレーションは何も操作しません。ルールを使用すると、1 つのオブジェクト、スキーマ全体、データベース全体 (Microsoft SQL Server および SAP ASE (Sybase ASE) ソースの場合)、またはパターンに一致するオブジェクトのグループにオペレーションをスコープできます。

注記

AWS マネジメントコンソールを使用すると、DMS Schema Conversion は移行プロジェクト UI の選択に基づいて選択ルールを自動的に構築します。DMS Schema Conversion API または AWS CLI を使用する場合にのみ、選択ルールを直接記述する必要があります。

移行プロジェクトのソース側とターゲット側の両方で同じルールシェイプを使用します。オブジェクトロケーターの server-nameフィールドは、ルールがソースデータプロバイダーをターゲットにするか、ターゲットデータプロバイダーをターゲットにするかを指定します。1 つの移行プロジェクトでは通常、評価と変換にはソースルール、SQL エクスポートにはターゲットルールの 2 種類のルールが使用されます。

選択ルールの形式

選択ルールドキュメントは、単一のrules配列を持つ JSON オブジェクトです。配列内の各エントリは 1 つのルールであり、すべてのルールには次のフィールドがすべて含まれている必要があります。

パラメータ 説明
rule-type selection ルールのタイプを識別する値。すべての選択ルールで、これを に設定しますselection。必須パラメータ。
rule-id 数値 (整数)。 ルールの一意の数値識別子。必須パラメータ。
rule-name 英数字値。 ルールを特定する一意な名前。必須パラメータ。
rule-action explicit, include, または exclude オブジェクトロケーターの解釈方法を決定する値。「ルールのアクション」を参照してください。必須パラメータ。
object-locator エンジン固有のロケーターキーを含む JSON オブジェクト。 ルールが適用されるデータベースオブジェクトを識別するオブジェクト。「オブジェクトロケーター階層」を参照してください。必須パラメータ。

次の最小限の例は、ソースサーバー上の 1 つのスキーマを対象としています。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } } ] }
注記

AWS CLI を使用する場合は、次の方法で選択ルールを渡すことができます。これは、任意の文字列パラメータで動作する標準の AWS CLI 機能です。

  • インライン: --selection-rules '{"rules":[...]}' (JSON 二重引用符のエスケープを避けるために一重引用符を使用)

  • 相対パス: --selection-rules file://example-rules.json

  • 絶対パス: --selection-rules file:///tmp/example-rules.json

内のすべてのフィールド値は空でない文字列object-locatorである必要があります。空の文字列 ( など"schema-name": "") は、 エラーで拒否されます。

注記

このdatabase-nameキーは、Microsoft SQL Server および SAP ASE (Sybase ASE) ソースでのみ有効です。他のソースエンジンのロケーターdatabase-nameへの送信は、サポートされていないキーとして拒否されます。

ルールの記述

オブジェクトロケーター階層

は、エンジン固有のキーの階層を介して 1 つ以上のデータベースオブジェクトobject-locatorを識別します。各キーはスコープを絞り込み、スコープを広げるために低レベルのキーを省略します。階層はソースエンジンによって異なります。

  • Microsoft SQL Server と SAP ASE (Sybase ASE)server-namedatabase-nameschema-nameオブジェクトレベルのキー (例: table-name)。これらのエンジンは、サーバーとスキーマの間に追加のdatabase-nameレベルがあります。

  • 他のすべてのエンジン (Oracle、IBM Db2 for z/OS、およびすべてのターゲットエンジン: PostgreSQL、Aurora PostgreSQL、MySQL、Aurora MySQL、IBM Db2 LUW) — server-nameschema-nameオブジェクトレベルのキー。これらのエンジンにはdatabase-nameレベルがありません。スキーマは の直下の上位コンテナですserver-name

次の の例では、特定の Microsoft SQL Server テーブルを 1 つ選択します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name", "table-name": "table_name" } } ] }

スコープをスキーマ全体に拡大するには、リーフレベルのキーを省略します。その後、このルールは、テーブル、ビュー、プロシージャ、関数、シーケンス、ソースエンジンが公開するその他のオブジェクトなど、そのスキーマ内のすべてのアドレス可能なオブジェクトタイプに適用されます。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name" } } ] }

使用できるロケーターキーは、ソースエンジンまたはターゲットエンジンによって異なります。エンジンごとの完全なキーリファレンスについては、「」を参照してくださいデータベース別のオブジェクトロケーターキー

ソースルールとターゲットルール

明示的なrule-typeフィールドは、ルールを「ソース」または「ターゲット」としてマークしません。の server-name値で区別を完全に制御しますobject-locator。 がソースデータプロバイダーserver-nameと一致する場合、ルールはソースメタデータツリーをターゲットとし、 がターゲットデータプロバイダーと一致する場合、ルールはターゲットメタデータツリーをターゲットとします。

server-name では、次のいずれかを使用できます。

  • データプロバイダーで設定されたサーバー名の値。これは通常、ホスト名または IP アドレスですが、同じマシンに解決される別の DNS 名または IP ではなく、データプロバイダーに保存されている値と正確に一致する必要があります。

  • データプロバイダーのリソース ID — ARN の最後のセグメント (たとえば、ARN が の場合arn:aws:dms:us-east-1:111122223333:data-provider:EXAMPLEABCDEFGHIJKLMNOPQRS、リソース ID は )EXAMPLEABCDEFGHIJKLMNOPQRS

ルールのアクション

rule-action フィールドを使用して、DMS Schema Conversion がオブジェクトロケーター内の値を解釈する方法を指定します。ワイルドカードは、 includeおよび でのみ使用できますexclude

行動

どのような場合に使用するか

"include"

名前がパターンに一致するすべてのオブジェクトを選択します。(0 文字以上の%任意のシーケンス) と _ (1 文字) をワイルドカードとしてサポートします。リテラルアンダースコアを一致[_]させるには を使用し、リテラルパーセント文字を一致[%]させるには を使用します。

を使用して、オブジェクトのグループを共有命名パターンと照合します。

"exclude"

前述のincludeルールで既に選択されているセットからオブジェクトを削除します。先行しないexcludeルールincludeは効果がありません。

を使用して、より広範な から例外を抽出しますinclude

"explicit"

名前付きオブジェクトを正確に選択します。schema-name、、 database-nameなどのリーフキーを含むすべてのロケーター値はtable-namescalar-function-name、リテラル文字列として一致します。%、、_、 などのワイルドカード文字][、 では特別な意味がありませんexplicit

アクションを実行するすべてのオブジェクトの正確な名前がわかっている場合に使用します。

注記

一部のオペレーションは"explicit"ルールのみを受け入れ、 "include"または をサポートしていません"exclude"。特定のオペレーションの AWS API リファレンスをチェックして、サポートされているルールアクションを確認します。

オブジェクトロケーターリファレンス

データベース別のオブジェクトロケーターキー

次のタブは、サポートされている各データベースのロケーターキーを示しています。

SQL Server

キー

選択

server-name

サーバー。

database-name

サーバー上のデータベース。

schema-name

データベース内のスキーマ。

table-name

デフォルトではテーブル、または で使用する場合はビュー"table-type": "view"

table-type

"table" (デフォルト) または "view"

procedure-name

ストアドプロシージャ。

scalar-function-name

スカラー値関数。

table-valued-function-name

テーブル値関数。

inline-function-name

インライン関数。

aggregate-function-name

集計関数。

synonym-name

シノニム。

sequence-name

シーケンス。

type-name

タイプ。

table-type-name

テーブルタイプ。

user-defined-type-name

ユーザー定義タイプ。

xml-schema-collection-name

XML スキーマコレクション。

category-name

オブジェクトクラス。を使用してオブジェクトのカテゴリ全体をターゲットにします。「」を参照してくださいエンジン別のカテゴリ名

Oracle

キー

選択

server-name

サーバー。

schema-name

スキーマ (Oracle ユーザー)。

table-name

デフォルトではテーブル、または で使用する場合はビュー"table-type": "view"

table-type

"table" (デフォルト) または "view"

procedure-name

ストアドプロシージャ。

function-name

関数。

package-name

パッケージ。

sequence-name

シーケンス。

synonym-name

シノニム。

type-name

ユーザー定義タイプ。

materialized-view-name

マテリアライズドビュー。

category-name

オブジェクトクラス。を使用してオブジェクトのカテゴリ全体をターゲットにします。「」を参照してくださいエンジン別のカテゴリ名

SAP ASE (Sybase ASE)

キー

選択

server-name

サーバー。

database-name

サーバー上のデータベース。

schema-name

データベース内のスキーマ。

table-name

デフォルトではテーブル、または で使用する場合はビュー"table-type": "view"

table-type

"table" (デフォルト) または "view"

materialized-view-name

マテリアライズドビュー。

procedure-name

ストアドプロシージャ。

scalar-function-name

スカラー値関数。

table-valued-function-name

テーブル値関数。

user-defined-type-name

ユーザー定義タイプ。

default-name

ユーザー定義のデフォルト。を通じてDescribe*のみ到達可能です。

category-name

オブジェクトクラス。を使用してオブジェクトのカテゴリ全体をターゲットにします。「」を参照してくださいエンジン別のカテゴリ名

PostgreSQL

キー

選択

server-name

サーバー。

schema-name

スキーマ。

table-name

テーブルまたはビュー。 を使用して区別table-typeします。

function-name

関数。

procedure-name

ストアドプロシージャ。

sequence-name

シーケンス。

materialized-view-name

マテリアライズドビュー。

type-name

ユーザー定義タイプ。

domain-name

ドメイン。

category-name

オブジェクトクラス。を使用してオブジェクトのカテゴリ全体をターゲットにします。「」を参照してくださいエンジン別のカテゴリ名

MySQL

キー

選択

server-name

サーバー。

schema-name

スキーマ。

table-name

テーブルまたはビュー。 を使用して区別table-typeします。

procedure-name

ストアドプロシージャ。

function-name

関数。

event-name

イベント。

category-name

オブジェクトクラス。を使用してオブジェクトのカテゴリ全体をターゲットにします。「」を参照してくださいエンジン別のカテゴリ名

IBM Db2 for z/OS

キー

選択

server-name

サーバー。

schema-name

スキーマ。

table-name

テーブル、ビュー、またはグローバル一時テーブル。 を使用して区別table-typeします。

table-type

"table" (デフォルト) または "view"

procedure-name

ストアドプロシージャまたは外部プロシージャ。

function-name

関数 (インライン、スカラー、ソース、テーブル、または外部関数)。

sequence-name

シーケンス。

alias-name

エイリアス。PostgreSQL ターゲットモデルはありません。 StartMetadataModelExportAsScriptで使用しますOrigin: SOURCE

mqtable-name

マテリアライズドクエリテーブル (MQT)。PostgreSQL ターゲットモデルがありません。

type-name

ユーザー定義型 (個別の型または構造化型)。PostgreSQL ターゲットモデルがありません。

category-name

オブジェクトクラス。を使用してオブジェクトのカテゴリ全体をターゲットにします。「」を参照してくださいエンジン別のカテゴリ名

IBM Db2 LUW

キー

選択

server-name

サーバー。

schema-name

スキーマ。

table-name

テーブルまたはビュー。 を使用して区別table-typeします。

procedure-name

ストアドプロシージャ。

function-name

関数 (スカラー、ソース、またはテーブル関数)。

sequence-name

シーケンス。

module-name

モジュール。

category-name

オブジェクトクラス。を使用してオブジェクトのカテゴリ全体をターゲットにします。「」を参照してくださいエンジン別のカテゴリ名

エンジン別のカテゴリ名

選択ルールのcategory-name値は、個々のオブジェクトではなくオブジェクトクラス全体を対象としています。カテゴリ名はエンジン固有で、大文字と小文字が区別されます。オペレーションが受け入れるかどうかcategory-nameはオペレーションによって異なります。使用しているオペレーションの AWS API リファレンスを確認してください。以下のタブは、ソースエンジンとターゲットエンジンの両方を対象としています。

重要

あるエンジンから別のエンジン用に設定されたプロジェクトにカテゴリ名を送信すると、エラーが返されます。

SQL Server

Microsoft SQL Server ソースには、次のカテゴリ名が適用されます。

category-name

グループ化する内容

Tables

ベーステーブル。

Views

ビュー。

Procedures

ストアドプロシージャ。

SQL scalar functions

スカラー T-SQL 関数。

SQL table-valued functions

複数ステートメントのテーブル値関数。

SQL inline functions

インラインテーブル値関数。

Aggregate functions

ユーザー定義の集計関数。

Synonyms

T-SQL シノニム。

Sequences

シーケンスオブジェクト。

Types

XML スキーマコレクションと列タイプ。

Table types

テーブルタイプのパラメータ宣言。

User-Defined Types

エイリアスと CLR ユーザー定義タイプ。

XML Schema Collections

XML スキーマコレクション。

Oracle

Oracle ソースには、次のカテゴリ名が適用されます。

category-name

グループ化する内容

Tables

テーブル。

External Tables

外部テーブル。

Views

ビュー。

Packages

PL/SQL パッケージの仕様と本文。

Procedures

ストアドプロシージャ。

Functions

スカラーやパイプラインを含むすべてのユーザー関数。

User Defined Types

オブジェクトタイプ。

Collection Types

VARRAY およびネストされたテーブルタイプ。

Sequences

シーケンス。

Materialized Views

マテリアライズドビュー。

Materialized View Logs

マテリアライズドビューの変更ログ。

Synonyms

パブリックシノニムとプライベートシノニム。

Clusters

インデックスクラスターとハッシュクラスター。

Database Links

データベースリンク。

SAP ASE (Sybase ASE)

SAP ASE (Sybase ASE) ソースには、次のカテゴリ名が適用されます。

category-name

グループ化する内容

Tables

ベーステーブル。

Views

ビュー。

Procedures

ストアドプロシージャ。

Scalar Functions

スカラー T-SQL 関数。

Table Valued Functions

テーブル値関数。

Materialized Views

マテリアライズドビュー。

User Defined Types

エイリアスユーザー定義タイプ。

Defaults

バウンドデフォルトオブジェクト。Describe-Only。個別に変換することはできません。

PostgreSQL

PostgreSQL および Aurora PostgreSQL ターゲットには、次のカテゴリ名が適用されます。

category-name

グループ化する内容

Tables

ベーステーブル。

Views

ビュー。

Functions

関数。

Procedures

ストアドプロシージャ。

Sequences

シーケンス。

Materialized Views

マテリアライズドビュー。

Types

ユーザー定義タイプ。

Domains

ドメイン。

MySQL

MySQL および Aurora MySQL ターゲットには、次のカテゴリ名が適用されます。

category-name

グループ化する内容

Tables

ベーステーブル。

Views

ビュー。

Functions

関数。

Procedures

ストアドプロシージャ。

Events

イベント。

IBM Db2 for z/OS

IBM Db2 for z/OS ソースには、次のカテゴリ名が適用されます。

category-name

ロケーターキー

グループ化する内容

Tables

table-name + "table-type": "table"

ベーステーブル。

Global Temporary Tables

table-name + "table-type": "table"

グローバル一時テーブル。PostgreSQL ターゲットモデルがありません。

Materialized Query Tables

mqtable-name

マテリアライズドクエリテーブル (MQTs)。PostgreSQL ターゲットモデルがありません。

Views

table-name + "table-type": "view"

ビュー。

Aliases

alias-name

エイリアス。PostgreSQL ターゲットモデルがありません。

Procedures

procedure-name

ストアドプロシージャ。

Functions

function-name

すべての関数サブタイプ: スカラー、テーブル、インライン、ソース。

Sequences

sequence-name

シーケンス。

User Defined Types

type-name

異なる型と構造化型。PostgreSQL ターゲットモデルがありません。

External Routines

function-name / procedure-name

外部関数と外部プロシージャ。

IBM Db2 LUW

IBM Db2 LUW ターゲットには、次のカテゴリ名が適用されます。

category-name

グループ化する内容

Tables

ベーステーブル。

Views

ビュー。

Functions

関数 (スカラー、ソース、テーブル)。

Procedures

ストアドプロシージャ。

Sequences

シーケンス。

Modules

モジュール。

選択ルールの例

次の例は、一般的な移行シナリオの選択ルールを記述する方法を示しています。各例では、 StartMetadataModelConversionや などの DMS Schema Conversion API オペレーションに渡す--selection-rulesパラメータ値を使用しますStartMetadataModelAssessment

Microsoft SQL Server ソースから変換する特定のテーブルを 1 つ選択します。Microsoft SQL Server ではdatabase-name、 に加えて が必要ですschema-name

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name", "table-name": "table_name" } } ] }

オブジェクトレベルのキーを省略して、Oracle スキーマ内のすべてのオブジェクトを選択します。Oracle にはdatabase-nameレベルがありません。スキーマは の最上位コンテナですserver-name

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } } ] }

Oracle ビューは、 table-name で を使用して対処されます"table-type": "view"。個別のview-nameキーはありません。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "table-name": "view_name", "table-type": "view" } } ] }

IBM Db2 for z/OS ソースから特定のストアドプロシージャを 1 つ選択します。IBM Db2 for z/OS は を使用しprocedure-namedatabase-nameレベルなしで から server-name に直接移行schema-nameします。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "procedure-name": "procedure_name" } } ] }

を のワイルドカード%として使用して、SAP ASE (Sybase ASE) スキーマのすべての手順を選択しますprocedure-name。SAP ASE (Sybase ASE) には database-nameserver-name~ が必要ですschema-name

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "%" } } ] }

プレフィックスで複数のテーブル%を一致させるには、 を使用します。この例では、名前が で始まるすべてのテーブルを選択しますFact_

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "table-name": "Fact_%" } } ] }

Oracle スキーマにすべてのオブジェクトを含め、名前が で始まるテーブルを除外しますTMP_。ルールはrule-id順番に評価されます。一致すると excludeが優先されます。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "exclude", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "table-name": "TMP_%" } } ] }

1 つのドキュメントで複数のexplicitルールを使用して、特定のプロシージャセットを名前で選択します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_A" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_B" } }, { "rule-type": "selection", "rule-id": "3", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_C" } } ] }

include ルールを使用して、名前が で始まるすべてのプロシージャを照合しPROC_、次にそのセットPROC_TESTから削除する exclude ルールを使用します。exclude ルールは includeルールに従う必要があります。スタンドアロンexcludeは効果がありません。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_%" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "exclude", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_TEST" } } ] }