1

JDBI を使用して、スキーマに含まれるテーブルに関する情報を取得する方法はありますか?

ABの2 つのデータベースがあり、できるようにする必要があります。

  1. Aにクエリを実行し、そこからテーブルのリストを取得します。
  2. Bをクエリし、それらの同じテーブルが存在し、同じ定義を持っていることを確認します (テーブル内のデータは気にしません)。

これmysqldumpは、コマンド ラインから実行できます。各データベースからステートメントを取得してCREATE TABLE比較します。しかし今、Dropwizard/JDBI コンテキストで、テストの一部としてそれを行う必要があります。

ドキュメントは少しまばらですが、それを可能にするのに適したものが見つかりません。できるかもしれない

handle.execute("show tables");

などですが、それは少しレベルが低いようで、もっと良い方法があることを願っていました。

それとも、JDBC に頼る必要がありますか?

4

2 に答える 2

2

JDBC には、データベース プロバイダーに依存しないメカニズムがいくつかあります。

接続からDatabaseMetaDataを取得し、式によるクエリを実行できます (null = any)。

DatabaseMetaData meta = connection.getMetaData();
ResultSet rs = meta.getColumns(...);

注意: ここでは名前の大文字と小文字が区別される場合があります。

于 2015-06-18T12:20:49.403 に答える