私はJavaで照会していた場合はどのようにMSSQLデータベースおよびMySQLデータベースからのデータを組み合わせることができますか?

sparta_:

私は1つは、MySQLサーバであり、他方がMSSQL 2つの別々のデータベースに格納されたデータにいくつかの分析を実行しようとしています。彼らは、私は1つのデータ構造で終わるように、いずれかの列に基づいて参加する必要があります。

私はその後、パンダでそれらを結ぶCSVファイルへの書き込みやJavaに戻ってそれをロードし、Pythonでパンダのデータフレームに別々にデータを保存しようとしています。しかし、これを行うのは非常に面倒であり、非常にスケーラブルではありません。

本質的に、私はこのような2つのクエリがあります。

MySQLの

String myDriver = "org.gjt.mm.mysql.Driver";
String myUrl = "jdbc:mysql://localhost/test";
Class.forName(myDriver);
Connection conn = DriverManager.getConnection(myUrl, "root", "");
String query = "SELECT * FROM users";
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);

MSSQL

String url = "jdbc:msql://someMSsqlserver/";
Connection conn = DriverManager.getConnection(url,"","");
Statement stmt = conn.createStatement();
ResultSet rs;
rs = stmt.executeQuery("SELECT * FROM people");

そして、私は彼らが一つのデータ構造に一緒に参加したいです。これは、Javaでネイティブに実行できるとにかくありますか?

O.ジョーンズ:

あなたが試みることができる様々な戦略:

  1. JavaプログラムがサーバAに一時テーブルを作成して使用し、その後、あなたは(サーバーA上のサーバBとINSERTにSELECTを使用して)、サーバBから必要なデータをコピーします。その後、一時テーブルとそのサーバ上ですでにテーブルを結合するために、サーバーA上で、適切なクエリを実行します。おそらくどちらかのサーバー上の一時テーブルを作成する権限を持っています。

  2. あなたは1を作成する権限を持っている場合、サーバーA上の永続的なテーブルを使用してください。それは1つのJavaプログラムを変更し、別のJavaプログラムとそれをクエリのたびそして、サーバAにサーバBからデータをコピーします。

  3. HashMapののキーが変数に参加しているJavaプログラム、中にはHashMapにあなたの二つのテーブルの小さい方からデータを読ま。次に、あなたのHashMapで参加したエントリを検索、行によって大きなテーブルの行から結果セットを処理します。

  4. MariaDBに切り替え、MySQLのクエリへのあなたのSQL Serverのテーブルを利用できるようにCONNECTストレージエンジンを使用します。

どのように戦略を選ぶのですか?それはあなたのDBAのkreweから取得することができますthings.Howくらいの協力の多くに依存しますか?あなたのテーブルはどのくらいありますか?あなたは常にすべての行、または時々サブセットを処理しますか?(あなたの例のクエリは持っていなかったWHEREので、多分あなたはすべてを処理している句を。)あなたは、テーブル全体を保持するために、あなたのJVMインスタンスに十分なRAMを得ることができますか?あなたは、この複数回の時間を行う、または週に一度する必要がありますか?どのくらいの時間、それはあなたがそれを行うたびに取ることができますか?

プロヒント:あなたの例のようなクエリでは、SQLコマンドを与えるSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;あなたはあなたの結果セットを取得しながら、あなたのテーブルへのアクセスを他のプログラムをブロックしないように、(サーバーの両方の種類に)最初に。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=283383&siteId=1