[DBMoto]テーブル数が多く、レプリケーション対象のテーブル選択が煩雑なときは


DBMotoでは、通常レプリケーション対象とするテーブルの選択には、「テーブル選択」から表示されるテーブル一覧よりチェックを入れて選択します。
この一覧表示は逐一データベースにクエリで問い合わせを行っています。

table_selection

しかし、テーブルやスキーマの数が多い場合、レプリケーション対象とならないテーブルまで表示されるため、選択が極めて煩雑な作業となることがあります。
さらに一部のデータベースでは、テーブルの数が多いと、そのテーブル一覧の表示に時間がかかってしまい、タイムアウトしてしまうケースがあります。

こういった場合、予めレプリケーション対象のテーブルやその構造がわかっているのであれば、そのテーブル情報を記載したCSVファイルを作成し読み込ませれば、クエリを使う代わりにそのファイルからテーブルの選択が可能です。


まずは、CSVファイルの記法を解説します。
CSVファイルの構造は、左からカタログスキーマテーブル主キーとなります。。
カタログはOracleなどの一部のデータベースで必要になることがあります。該当していなければ以下の例の通り空欄にします。
主キーは1つだけの場合も複数の場合も[]で囲って配列の形式で入力します。存在しない場合、以下の例の通り省略してください。

"","CLIMB","ADDRESS"
"","CLIMB","ADDRESS1",["STREET","STATE","ZIP"]
"","CLIMB","ADDRESS2",["APT"]


ここからは読み込ませる方法を解説します。例として以下のようなCSVを用意します。
content_of_csv

まずは通常通り「テーブル選択」を開きます。枠の右上付近にボタンがあるのでクリックすると、「ファイルからインポート」というメニューがあるのでこれを選択します。
import_from_file_table_selection_2

読み込んだあと、トグルボタンを展開していくと、下の通り、読み込ませたテーブルのみが一覧表示されます。ここからテーブルを選択してください。
table_selection_after_load


この機能を利用するに当たっての注意点は以下になります。

  • スキーマ名やテーブル名やフィールド名の大文字小文字は問いませんが、データベースによっては判定が厳密であることがありますので、大文字小文字まで正確な入力を推奨いたします。
  • CSVファイルの文字コードは必ずUTF8にしてください。ShiftJISは日本語のテーブル名・フィールド名の場合、文字化けします。
  • テーブルの構造がもしスキーマの構造に従っていない場合(例えばMicrosoft Accessではカタログとスキーマ情報とともにテーブルがファイルに含まれています。)、そのテーブルは無視されます。
  • データベース上にテーブルが存在しない場合、エラーが発生し操作は取り消されます。
    table_doesnt_exist
  • キーリストにあるいずれかの主キーフィールドがテーブル構造上に存在しない場合、エラーが発生し操作は取り消されます。
    (※主キーではないフィールドが主キーとして指定されていた場合、そのフィールドは仮想PKとして登録されます。)
    primary_key_doesnt_exist

2019年5月29日 追記

レプリケーション一括作成機能を使用して、複数テーブルのレプリケーションをまとめて作成したい場合、上記の手段でレプリケーション対象となるテーブルのみをDBMotoに登録したとしても、デフォルトの設定ではレプリケーション一括作成のウィザードで全てのテーブルが見えてしまい、結局テーブルの選択が煩雑になってしまいます。

そのため、レプリケーション一括作成を行う前に、DB接続設定で切断モードTrueに設定します。これにより、DBMotoに登録されたテーブルのみを簡単にレプリケーション一括作成が可能です。

関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください