SnowConvert AI - 名前変更機能¶
データベースの移行プロセス中にオブジェクトの名前を変更することは、多くのユーザーが行う必要があることです。このため、SnowConvert AIでは、以下のタイプのユーザー定義オブジェクトに新しい名前を定義できるよう、名前変更機能を提供しています。
注釈
この機能は、Teradata、Sql Server、Redshift ONLY でサポートされています。
スキーマ
テーブル
ビュー
マテリアライズドビュー
プロシージャ
関数
マクロ
注釈
名前の変更機能は、オブジェクト定義とオブジェクトの用途の両方に適用されます。
これらのオブジェクトは、通常、スキーマまたはデータベース内で修飾されます。そのため、データベースプラットフォームによっては、オブジェクト Table1 は、単に Table1、 MySchema.Table1、または MyDatabase.MySchema.Table1 として参照されることがあります。曖昧さを避けるために、名前を変更するファイルで各オブジェクトを完全に修飾することは、 必須 です。
新しいオブジェクト名は、以下の形式の.jsonファイルで指定します。
注釈
この例は、「マクロ」セクションを含んでいることに注意してください。これは、 Teradata 固有の要素であり、指定された言語によって異なる場合があります。
使用状況¶
名前変更機能を使用するには、SnowConvert AIのCLIバージョンに、次の引数 --RenamingFile を付けて実行し、名前変更情報を含む.jsonファイルのパスを指定する必要があります。コマンドの例は次のようになります。
snowct.exe -i "somePath/input" -o "somePath/output" --RenamingFile "somePath/renamings.json"
モードの名前の変更¶
オブジェクトの種類ごとに2つのフィールドがあることに注意してください: "Tables" と "TablesRegex", "Views" と "ViewsRegex" など。これは、名前の変更を指定する方法が2つあるためです。
オブジェクトごと(行ごと)¶
このモードでは、各行はオブジェクトを表し、元の完全修飾名と新しい名前を含む必要があります。つまり、スキーマ "OriginalSchema" の中にある"Table1"というオブジェクトをスキーマ "SchemaSF" に移動させたい場合、その行は次のようにしなければなりません。
"Table2"に名前を変更する場合は、その行は次のようにしなければなりません。
この情報は、.jsonファイルの "Tables"、 "Views"、 "Procedures"、 "Macros" および "Functions" セクションで指定する必要があり、各行はコンマで区切る必要があります。例を見てみましょう。
TableExample1
上記のサンプルは、ワークロード全体の中で、"Table1"、"Table2"、"Table3"と呼ばれる、スキーマ"Schema1"内にある3つのテーブルの名前のみを変更することを意味しています。これらはそれぞれ、"SF_Table1"、"SF_Table2" および "SF_Table3", に名前を変更され、最終的にSnowflakeの "SF_Schema1"スキーマの下に配置されます。
正規表現¶
複数のオブジェクトの名前を同じように変更する必要がある場合、正規表現で同じ種類のオブジェクトに適用するパターンを定義することもできます。各名前の変更の指定には2行が必要で、1行目は "RegexExpr" がマッチ式、2行目は "RegexReplace" が置換式です。この情報は、.jsonファイルの "TablesRegex"、 "ViewsRegex"、 "ProceduresRegex"、 "MacrosRegex" および "FunctionsRegex" セクションで提供されなければなりません。つまり、先の例は正規表現機能を用いて次のように書くこともできます。
TableExample2
唯一の違いは、この方法は"Schema1"スキーマ内にあるすべてのテーブルに適用されるということです。この正規表現は、"Schema1"スキーマ内で定義されたすべてのテーブルにマッチし、ドット以降のすべてのテーブルを含むキャプチャグループを作成します。正規表現による置換は、テーブルを"SF_Schema1"スキーマに移動し、正規表現で最初に作成されたグループ($1)を参照する全てのテーブルに"SF_"プレフィックスを追加します。
名前の変更の優先順位¶
同じオブジェクトに適用される改名があり、そのうちの1つだけが選ばれるかもしれません。同じセクション内で、SnowConvert AIは現在のオブジェクトの名前と一致する最初の名前変更を適用し、そのオブジェクトの名前を変更しようとするのを止めます。従って、次の例では、 "Tables" セクションが、「Table1」を「Table1-a」と「Table1-b」に名前変更することを指定しているにもかかわらず、SnowConvert AIは「Table1-a」にのみ名前変更します。
また、SnowConvert AIは、正規表現セクションを試す前に、まずオブジェクトの名前変更セクションをチェックします。そのため、以下の例では、同じオブジェクト「Schema1.Table1」に両方の名前変更が適用できるにもかかわらず、 "Tables" セクションで定義されたものだけが適用されます。
例¶
次のような入力コードがあるとします。
入力コード
そして以下の名前変更情報があります
ファイルの名前の変更(.JSON)
これは、名前を変更した場合としなかった場合の出力コードです。
Snowflake出力コード¶
"CLIENT"への参照がすべて"USER"に名前を変更されていることに注目してください