|
Ispirer SQLWays データベース移行ソフトウェア
[DDL] サブセクション
このサブセクションではDDLとSQLスクリプトの生成の調整について説明します
- GENERATE_DROP_TABLE - もし Yes が指定された場合、DROP TABLE ステートメントは各 CREATE TABLE ステートメントの前に生成されます。デフォルト値は Noです。設定可能な値 - Yes, No.
- DROP_TABLE_CASCADE_CONSTRAINTS - もし Yes が指定された場合、CASCADE CONSTRAINTS オプションが DROP TABLE ステートメントに生成されます。現在このオプションは Oracle のみサポート。詳しい情報はテーブルのドロップを参照。
このオプションはターゲットデータベースが Oracle で GENERATE_DROP_TABLE がYesに設定された場合のみ有効です。デフォルト値は Noです。
このオプションはテーブルの再作成を行わず、インデックス生成のスクリプトが再実行される場合に便利です。
- OUTSCHEMA - /OSN オプション (Output schema name).
- EMPTY_SCHEMA - /EMPS オプション。設定可能な値 - Yes, No。
- COLUMN_NAME_CASE - このオプションはSQLステートメントのカラム名の大文字小文字を指定します。設定可能な値 - Upper, Lower。もし、 no の値が指定された場合、カラム名の大文字小文字は変更されずソースデータベースから取得したものが使用されます。
- USE_CONSTRAINT_NAMES - もし、Yes が指定された場合、ソースデータベースの制約名がDDLスクリプトの生成で用いられます。そうでない場合、制約名はスキップされます。デフォルト値はNoです。設定可能な値 - Yes, No。
- PK_COLS_NOTNULL - このオプションは カラムをプライマリキーにするCREATE TABLEステートメントにNOT NULL 制約を強制します。デフォルト値は Yesです。設定可能な値 - Yes, No。
いくつかのデータベース (Oracle, Sybase, Access 等) では、NOT NULL制約付きのプライマリキーカラムを指定せずテーブルを生成し、後でプライマリキーを追加する時にカラムをNOT NULLに変更する事ができます。他のデータベース (IBM DB2, Microsoft SQL Server, MySQL 等) では NOT NULL制約付きのプライマリキーカラムを先に生成する必要があります。
デフォルト値は Yes (全てのプライマリキーカラムは NOT NULL 制約付きで生成)。設定可能な値 - Yes, No。
Identity カラムは一般的にテーブルのユニークなロー識別子としてプライマリキー制約と共に使用されます。
- INSERT_COMMIT_COUNT - このオプションは INS 出力形式にのみ有効で、指定された回数のINSERTステートメント実行後にCOMMITステートメントを生成するのに使われます。デフォルト値は 0 (COMMITは生成しない)。
- STATEMENT_DELIMITER - /STDEL オプション (ステートメント終端文字)。
- STATISTICS_STATEMENTS - このオプションはテーブルインデクス用のDDLステートメントで統計情報を計算するステートメントを生成するか否かを指定します。デフォルト値は Yesです。設定可能な値 - Yes, No。現在 SQLWays が統計情報作成のステートメントを生成するのは IBM DB2 のみです。
- PK_UNIQUE_INDEXES - このオプションはプライマリキーにユニーク制約とインデクスを作成するかを指定します。デフォルト値は Noです。 これはインデクスのスクリプトとユニーク制約が 作成されない事を意味します。この場合、データベースはデータベースが暗黙的なユニークインデクスとユニーク制約を生成します。
もし、プライマリキーとユニーク制約と同じ定義のユニークインデクスが先に作成されていた場合、データベースはそれらのインデクスをプライマリキーとユニーク制約として使用します。
PK_UNIQUE_INDEXES=ALWAYS が指定された場合、プライマリおよびユニーク制約のインデクススクリプトは常に生成されます。これはプライマリキーとユニーク制約を作成する前にインデクスを作るのに使われます。
ソースデータベースで識別子 (table and column names など) として使用可能な文字がターゲットデータベースでは使用できない場合があります。
例えば、Microsoft SQL Serverでは @ を識別子に使用できますが、Oracle では使用できません。
もしこのオプションになにも値が指定されず、"remove_not_allowed_chars=no"である場合、識別子に使用不可な文字は全てターゲットデータベースで使用可能になります。
もし、Yes が指定された場合、全ての使用不可文字はターゲットデータベースの識別子から削除されます。
デフォルト値は Yes です。設定可能な値 - Yes, No。
ソースデータベースの識別子の先頭文字がターゲットデータベースでは許容されない事があります。
例えば、Microsoft SQL Server の識別子の先頭に _ (underscore) を使用できますが、Oracle の識別子は不可です。
もし、このオプションになにも指定されないか "remove_not_allowed_chars_fpos=no"である場合、識別子の先頭の使用不可文字はターゲットデータベースでもそのまま残されます。
もし、Yes が指定された場合、識別子の先頭の使用不可文字をターゲットデータベースでは削除されます。
デフォルト値は Yes です。設定可能な値は - Yes, No です。
もし、Yes が指定された場合、SQLWays はターゲットデータベースの識別子の最大長を超える識別子を切り詰めます。もし切り詰めた識別子の名前が重複した場合、SQLWays は識別子の最後の文字 を "2" から始まる昇順の数字で置き換えます(最初の識別子以降)。
例えば、もしSQLWaysが識別子の切り捨てを行った際、"home_phone_numbers" のような2つの同一の識別子名が発生した場合、"home_phone_numbers" および "home_phone_number2" に変換されます。
もし、No が指定された場合、SQLWays はターゲットデータベースの最大長を超える識別子の切り捨ては行いません。
デフォルト値はYes です。設定可能な値は - Yes, No です。
もし、Yes が指定され、識別子がターゲットデータベースの識別子の最大長を超える場合、SQLWays は先ず最初に非英数文字を全て削除します。それでも識別子が最大長を超えている場合には切り詰めを行います。もし、No が指定された場合、SQLWays は非英数文字を削除せずすぐに切り詰めを行います。
例えば、もし Yes が指定された場合、"regional_customer_account_number#" (33 文字) のようなSQL Server の識別子は "regionalcustomeraccountnumber" (29 文字) に変換されます。
デフォルト値は Yes です。設定可能な値は - Yes, Noです。
- REPLACE_RESERVED_WORDS - このオプションはターゲットデータベースの予約語であるソースデータベースの識別子を変更するために使用されます。
例えば、もし %RWORD%_ が指定された場合、全ての予約語の右側にアンダースコア文字が追加されます。
このテンプレートのデフォルト値は %RWORD% です。この場合、予約語は変更されず、ターゲットデータベースのSQLステートメントの中で区切り文字で囲まれて表現されます。区切り文字はデータベースにより異なります。区切り識別子 を参照してください。もし ANSI_QUOTED_IDENTIFIER が OFFの場合、識別子を引用符で囲むことはできず、Transact-SQL の識別子のルールに従う必要があります。リテラルは単一または二重引用符で囲むことができます。
ANSI_QUOTED_IDENTIFIER のデフォルト値は ONです。このオプションは MSSQL および Sybase ASE で有効です。
- START_VALUE_EXTRACTION_WITH_SEQUENCE_INCREMENT - このオプションは DB2 から Oracle への移行のために用意されました。もし、このオプションが "yes" に設定された場合、ソースの現在のシーケンス番号に INCREMENT BY 句で指定された値を加算したものをターゲットのシーケンスの開始番号に設定します。 ソース: CREATE SEQUENCE ORDER_SEQ START WITH 1 INCREMENT BY 2 NO MAXVALUE NO CYCLE CACHE 24# (現在のシーケンス値は 3) 変換後: CREATE SEQUENCE ORDER_SEQ INCREMENT BY 2 START WITH 5 MAXVALUE 2147483647 MINVALUE 1 NOCYCLE CACHE 24 NOORDER; もし、このオプションが "no" (デフォルト) に設定された場合 変換後: CREATE SEQUENCE ORDER_SEQ INCREMENT BY 2 START WITH 1 MAXVALUE 2147483647 MINVALUE 1 NOCYCLE CACHE 24 NOORDER;
- cd2s_sch_to_obj_name - このオプションは Sybase ASE から DB2 への移行のために用意されました。このオプションは CONVERT_DATABASE_TO_SCHEMA オプションが "yes" に設定された時のみに有効です。cd2s_sch_to_obj_name オプションのデフォルト値は "no" です。もし、cd2s_sch_to_obj_name=yes ならば、以下の例に示すように、スキーマ名がオブジェクト名に追加されます ソース: db1.sch1.tab2 変換後: db1.sch1_tab2 もし、cd2s_sch_to_obj_name=no ならば、スキーマ名は省略されます: ソース: db1.sch1.tab2 変換後: db1.tab2
SQLWays wizard でDDLオプションを指定するには: