任意の開発言語用のコード生成やコード除去、テーブル比較、テーブルコピー機能

その他の機能 アプリ全体のツールメニュー

コード生成

開発言語にあわせて、SQL文の前後に文字列を付加して、コードを生成したり、逆にコードからSQL文だけを取り出します。VSやDelphiのデバック画面からコピーした制御コード付きSQLから制御コードも取り除きます。

機能の説明
コード生成 元のSQL文の行頭及び行末に指定した文字列を追加します。一行目と2行目以降は別々に文字列を設定します。
'2重化 「'」を2重化します。
"2重化 「"」を2重化します。
元コード表示 元のSQL文を表示します。
整形 SQLを整形します。
コード除去 エディタなどから貼り付けたコードの行頭、行末から指定された文字列を除去します。一行目と2行目以降は別々に文字列を設定します。なお、DelphiやVSのデバッカからSQLをとってきた場合に挿入される制御文字もついでに除去します。
'1重化 「'」を1重化します。
"1重化 「"」を1重化します。
:を@へ パラメータクエリの識別子「:」を「@」に置換します。
@を:へ パラメータクエリの識別子「@」を「:」に置換します

※以上の文字列置換は構文解析しない単純置換ですので、値としての文字列も変換しちゃいます。

コード除去コード生成  相互に変換可能

データ比較

2つのテーブルの差分を表示します。
データのコンボボックスにはMDIの各データが表示されますので、DB間にまたがった比較も可能です。

比較設定

比較結果

比較の方法には以下の2つがあります。

・単純比較 ・・・ レコードの頭から順番に同じ行位置のレコードを比較します。
行単位の単純な比較です。
・キー比較 ・・・ 指定したキーが一致するレコード同士を比較します。
同じキーをもつレコードでグルーピングして比較します。
差分データはExcelに出力できます。
※比較したくないフィールドについては取得後のフィルタで列を非表示してください。

外部ツールで比較表示することもできます。データをCSV出力して差分ツールに渡しているだけですけどね。差が見やすくていいかも...。
外部ツールで比較

 

DB間テーブルコピー

2つのDB間でテーブルのコピーを行います。この画面には2つのモードがあり、一つはテーブル一括モードで、もうひとつは単テーブルモードです。
※この機能は使い方を誤ると確実にデータを破壊します。って言うか、そういう物なので、必ず事前に正常に機能するか確認の上ご利用ください。必要ならバックアップを取るなど自己防衛してくてください。

テーブル一括モード

コピーのルール:
  ・既存の同じテーブル名のデータを対象とします。
  ・コピー先のデータは全削除します。
  ・同一のフィールドだけコピーします。
  ・一覧でチェックボックスがグレイのテーブルを対象とします。
  ・成功した場合は、グレイがチェックに変わります。
  ・トランザクションを開始しない場合、テーブル単位でコミットします。
  ・途中で失敗しても最後まで実施します。

単テーブルモード

 コピーのルール:
  ・指定されたテーブル名のデータを対象とします。
  ・コピー先のデータは全削除します。
  ・指定されたフィールド名対応に基づきコピーします。

操作手順:

1.コピー元とコピー先の接続を選択します。
2.ADOにより任意の接続文字列を使用する場合は、接続のコンボボックスの一番上「ADO接続文字列(左記)」を選択し接続文字列を入力します。
   (「設定」ボタンで接続文字列を作成できます。)
3.接続をクリックし、クリックしテーブル一覧を取得します。(コピー元から取得します。)

・テーブル一括モードの場合
3.コピー元テーブル一覧で対象を選択します。(グレイのチェックが対象です。)
4.「コピー実行」をクリックします。必要に応じてトランザクションをスタートしてください。

・単テーブルモードの場合
3.コピー元とコピー先のフィールド対応を指定します。
4.「コピー実行」をクリックします。必要に応じてトランザクションをスタートしてください。

※コピーの実際について

この画面で行われるコピーの手順は以下の通りです。
1.コピー先のDBへTRUNCATE TABLE文が発行され、エラーならはDELETE文が発行される。
2.コピー元からデータをセレクト。
3.空のデータセットに行を追加し値をセット。
4.コピー先にInsert。
  このとき、値のコピーはバリアントで行われるため、型違いであっても可能なら、良きに計らってくれます。

※バルク実行モードについてバルクインサートの設定

UniDAC接続の場合に使用可能です。
DBがバルクインサートをサポートしている場合は、バルクインサートを使用して高速にコピーします。
バルク実行モードでは右図のような設定が可能になります。

※DBがバルクインサートをサポートしていない場合に、バルク実行モードを指定しても普通のINSERT文が発行されるだけです。