図1.概要図
MTU および MTU adaptor for MySQL の実行環境は Vista または Server 2008 以降の Windows をご用意下さい。Oracle Database と MySQL Server のOSは特に制限がありませんが、Oracle Database は 10g Release 2 以降、MySQL Server は Release 5.1 以降に対応します。
環境変数名 | 出荷時初期値 | 書き換える値 |
---|---|---|
USERID | SYSTEM/MANAGER | SYSTEM/パスワード@DB別名 |
SRC_USER | SCOTT | 移行元テーブルが含まれるスキーマ名 |
STDOUT | 0×0000 | 0×0007 |
BULK_SIZE | 1000 | 20 |
STREAM_LOCATOR | named_pipe://\\.\pipe\{C}.{X} | |
QUERYFIX | qryfix | |
QUERYVAR | qryvar | “select * into 移行元テーブル名 from 移行元テーブル名;” |
SKIPSCR | true | |
DATE_MASK | YYYYMMDDHH24MISS | YYYY-MM-DD HH24:MI:SS |
MERGE_LOBS_INTO_SDF | true |
表1.環境変数の設定値
下記の環境変数は MTU の出荷時初期値で使用するものとします。前回のトピックでこれらの値を変更して使っていた場合はご注意ください。
環境変数名 | 出荷時初期値(参考) |
---|---|
EMBED_COLUMN_NAME | |
OUTPUT | %MTU_USER_DIR%output |
ENCLOSER | ~~ |
ENCLOSER2 | |
RECLENGTH | true |
LONGTRANSIT | 0 |
DATAEXT | |
CHARSETID | 0 |
NOBYTEORDERMARK |
表2.出荷時初期値のまま使用する環境変数
INSERT INTO tbl_name (a,b,c) VALUES (?,?,?),(?,?,?),(?,?,?)
丸かっこで囲まれた疑問符のカンマ区切りリストは、バルクの要素数だけ繰り返されます。
Prepare 関数は mysql_stmt_prepare 関数を呼び出します。この関数は Stmt オブジェクとの存続期間を通じて1回乃至2回までしか呼び出されないので、MqSQLデータベースへ解析を原因とする負荷をほとんど与えません。
MapParam 関数は、MTU から読み取ったデータのバッファをMySQL VALUES 句へ割り当てます。列の数と行の数の積の回数、呼び出されます。
Execute 関数はmysql_stmt_bind_param 関数と、mysql_stmt_execute 関数をそれぞれ、(全体の行数÷バルクの要素数)回呼び出します。(全体の行数÷バルクの要素数)の計算結果、剰余が生じる場合、剰余を要素数とするバルクを1回だけ実行します。
MTU adaptor for MySQL を改良して未対応のデータ型へ対応させようとする場合は、そのデータ型固有の変換手順を実装する派生クラスを新設し、仮想コンストラクタの実装へ新しい型のインスタンスを生成する分岐を追加して下さい。
必要に応じて、cCtlFile::Parse にある正規表現を改修して、新しいデータ型の SQL*Loader のフィールド式にマッチさせて下さい。