DBMotoでは、通常レプリケーション対象とするテーブルの選択には、「テーブル選択」から表示されるテーブル一覧よりチェックを入れて選択します。
この一覧表示は逐一データベースにクエリで問い合わせを行っています。
しかし、テーブルやスキーマの数が多い場合、レプリケーション対象とならないテーブルまで表示されるため、選択が極めて煩雑な作業となることがあります。
さらに一部のデータベースでは、テーブルの数が多いと、そのテーブル一覧の表示に時間がかかってしまい、タイムアウトしてしまうケースがあります。
こういった場合、予めレプリケーション対象のテーブルやその構造がわかっているのであれば、そのテーブル情報を記載したCSVファイルを作成し読み込ませれば、クエリを使う代わりにそのファイルからテーブルの選択が可能です。
まずは、CSVファイルの記法を解説します。
CSVファイルの構造は、左からカタログ、スキーマ、テーブル、主キーとなります。。
カタログはOracleなどの一部のデータベースで必要になることがあります。該当していなければ以下の例の通り空欄にします。
主キーは1つだけの場合も複数の場合も[]で囲って配列の形式で入力します。存在しない場合、以下の例の通り省略してください。
"","CLIMB","ADDRESS"
"","CLIMB","ADDRESS1",["STREET","STATE","ZIP"]
"","CLIMB","ADDRESS2",["APT"]
ここからは読み込ませる方法を解説します。例として以下のようなCSVを用意します。
まずは通常通り「テーブル選択」を開きます。枠の右上付近にボタンがあるのでクリックすると、「ファイルからインポート」というメニューがあるのでこれを選択します。
読み込んだあと、トグルボタンを展開していくと、下の通り、読み込ませたテーブルのみが一覧表示されます。ここからテーブルを選択してください。
この機能を利用するに当たっての注意点は以下になります。
- スキーマ名やテーブル名やフィールド名の大文字小文字は問いませんが、データベースによっては判定が厳密であることがありますので、大文字小文字まで正確な入力を推奨いたします。
- CSVファイルの文字コードは必ずUTF8にしてください。ShiftJISは日本語のテーブル名・フィールド名の場合、文字化けします。
- テーブルの構造がもしスキーマの構造に従っていない場合(例えばMicrosoft Accessではカタログとスキーマ情報とともにテーブルがファイルに含まれています。)、そのテーブルは無視されます。
- データベース上にテーブルが存在しない場合、エラーが発生し操作は取り消されます。
- キーリストにあるいずれかの主キーフィールドがテーブル構造上に存在しない場合、エラーが発生し操作は取り消されます。
(※主キーではないフィールドが主キーとして指定されていた場合、そのフィールドは仮想PKとして登録されます。)
2019年5月29日 追記
レプリケーション一括作成機能を使用して、複数テーブルのレプリケーションをまとめて作成したい場合、上記の手段でレプリケーション対象となるテーブルのみをDBMotoに登録したとしても、デフォルトの設定ではレプリケーション一括作成のウィザードで全てのテーブルが見えてしまい、結局テーブルの選択が煩雑になってしまいます。
そのため、レプリケーション一括作成を行う前に、DB接続設定で切断モードをTrueに設定します。これにより、DBMotoに登録されたテーブルのみを簡単にレプリケーション一括作成が可能です。
関連したトピックス
- [HiT ODBC/DB2]設定とDB2 UDBとSQL開発ツール(Accessなど)との連携
- OracleのNet Configuration Assistantでリモート接続時にORA-12541
- DBMotoを使用してデータベース変更用の監査ログの作成方法【リアルタイムレプリケーションツールDBMoto】
- Microsoft SQL Server と HiT OLE DB プロバイダでリンク・サーバ作成
- GlueSyncでNoSQL活用を加速:導入編
- Oracle (基幹データベース)とMS Access間でのリアルタイムなデータ・レプリケーション
- ・フェラーリ・アメリカ:DBMoto導入事例
- HiT ODBC/400 + SQL GUIツール(Access等)でAS/400 DB2を簡単にアクセス可能に
- ・DBMotoユーザ事例:エプソン(香港)
- DBMotoでのMicrosoft SQL Server 2017 on Linuxとの接続検証