0

.sqlCloudBeesにデプロイされたJavaアプリケーションからmysqlデータベースに完全なファイル(DDLおよびDMLセンテンスを含む)をインポートするための最良の方法は何ですか?

ランタイムプロセスを取得して、このようなものが機能するかどうかを確認する必要があります

  Runtime rt = Runtime.getRuntime();
  Process pr = rt.exec("mysql -p -h ServerName DbName < dump.sql");

(セルフホスト環境に関する前の質問の推奨ソリューション、CloudBeesホストアプリケーションでmysqlにアクセスするプロセスを実行できるかどうかわからない)?

より良い解決策はありますか?(ここでも、アプリケーション内から実行するために、.sqlインポートするファイルは、Webアプリケーションとの対話の一部としてユーザーによって提供されます)。

.sqlファイルを解析して、jdbcを介して文を1つずつ送信することは避けたいと思います。

4

2 に答える 2

2

私はこれを自分で試したことはありませんが、Flywayでは、CloudBees でのアプリの初期化中に SQL ファイルをインポートできるようです。

Flyway は、人気のある Ruby のデータベース移行の概念を Java に持ち込もうとする試みです。Flyway を使用すると、アプリのクラスパス内に .sql ファイルを配置できます。その後、必要に応じて Java コードを使用してデータベースを更新できます。

彼らの移行ドキュメントに基づいて、.sql ファイルを V1__Initial_version.sql という名前のファイルとして、クラスパスの /db/migration/ ディレクトリに配置できるはずです。次に、次のコードのようなものを使用して、アプリの起動時に移行をトリガーします。

import com.googlecode.flyway.core.Flyway;
...

Flyway flyway = new Flyway();
flyway.setDataSource(...);
flyway.migrate();

Flyway FAQでは、移行中にデータベースがロックされると説明されていることに気付きました。そのため、CloudBees でアプリケーションをスケールアウトして複数のインスタンスを使用する場合でも、このアプローチは機能するはずです (非常に素晴らしい!!)。

于 2012-11-15T18:49:12.497 に答える
0

試してみてください。mysql cmd ツールは、ホスト上にある場合とない場合があります。そうでない場合は、おそらく追加できます。

もう 1 つのオプションは、Jenkins ジョブを使用してそれを行うことです。jenkins が呼び出してデータベースをロードする API を公開できます。

于 2012-11-15T09:30:19.690 に答える