私はOracleからPostgreSQLへの移行プロジェクトに携わっています。Oracle構文からPostgreSQLに変換された多数のクエリのテストを自動化する方法を探しています。データは正常に移行されたため、確認する必要はありません。私は、PerlやPythonを使ってゼロからソリューションをハックすることができますが、より簡単な方法があるかもしれません。私はデータベーステストフレームワーク、lke Test :: DBUnutまたはpgTapを見ていましたが、ユーザが検証するための結果を提供していると仮定しています。私の場合、これらは私たちが移行しているデータベースから得られたものです。問題は、古い(Oracle)データベースと新しい(PostgreSQL)データベースに対してクエリを実行し、結果を得て比較し、その差異とプロセスで発生する可能性のあるエラーを強調表示する既存のデータベース固有のツールまたはテストフレームワークですか?複数のデータベースシステムに対するSQLクエリのテスト
答えて
対応するクエリを異なるスキーマ(1つのOracleと他のPostgreSQL)で実行するJUnitプロジェクトを作成する方法はありますか?
また、プロジェクトごとにSQL Pluginという2つの単純なMavenプロジェクトを作成することもできます(それぞれのプロジェクトでは、同じ順序でpom.xmlにペーストできます)。 Maven(Hudson?)をサポートする継続的な統合サーバーを使用してこれらのテストを後で自動化し、スケジュールされた実行を設定することができます。
幸運を祈る!
私は両方のデータベースに対してクエリを実行し、python psycopg2とcx_oracleを使用して結果を収集するためのカスタムツールを作成しました。それらを比較することは、各行のハッシュを計算し、postgresql行のハッシュにOracle行が存在するかどうかをチェックすることです。落とし穴のカップル:のpythonへのOracle/PostgreSQLのから変換するとき
浮動小数点数は精度を失うことができます。ドライバーでタイプ固有のフックを使用して(ドキュメンテーションを参照)、フロートではなく10進数に変換してください。
両方のデータベースから一度に1つの行を読み込み、その値を比較して移動するのは魅力的です。ただし、SQL結果が明示的に(ORDER BYで)順序付けされていない限り、これは機能しません。残念なことに、結果をすべて一度に読み取ると、たくさんの行を生成するクエリに多くのメモリが必要になります。
等しい結果をもたらすクエリ と、両方のデータベースで0行を生成するクエリとを区別する必要があります。後者は検査された である必要があり、クエリにパラメータが含まれている場合、その値は に変更する必要があります。
- 1. 複数のSQLクエリでのパフォーマンスのテスト
- 2. 複数のバージョンのSQL Serverに対するソフトウェアのテスト
- 3. 複数のテーブルに対するMYSQLI SQLクエリが失敗する
- 4. 複数の入力に対するSQLクエリ
- 5. SQL:複合エンティティに対するクエリ
- 6. SQL Server:1対複数選択クエリ
- 7. 複数のSQLクエリ
- 8. sql server - 1対1を複数の列にクエリ
- 9. SQLクエリのヘルプ - 複数の選択テストの採点
- 10. mysqlデータベースの複数(1対多)テーブルのSQLクエリ
- 11. 複数の結果に対するsql updateクエリ。 (内部結合とトリガーなし)
- 12. 同じSQLクエリで複数のSQLクエリをチェックする方法
- 13. SQL複数の結合クエリ
- 14. SQLクエリ複数の結合
- 15. SQLクエリ複数のテーブル
- 16. 複数のsql更新クエリ
- 17. 複数のサーバーSQLクエリ.Net
- 18. 複数の列カウントに対して今日の1行を返すSQL Serverクエリ
- 19. 複数のテーブルで複数のJOINSを使用するSQLクエリ
- 20. SQLクエリ - 複数のキーワードを検索する複数のキーワード
- 21. 1つの複雑なクエリ対複数の単純なクエリ
- 22. Igniteキャッシュに対するSQLクエリのベンチマーク
- 23. テーブルの列に対するSQLクエリ....(Oracle)
- 24. SQL Join複数の1対多クエリをクエリしますか?多対多の場合
- 25. 複数のプロパティに対する不等式クエリによるページング
- 26. MS SQL:複数行の基準にクエリ
- 27. SQLパラメータ化クエリに複数の値データベース
- 28. Build-automation-sbt:複数の依存関係に対するコンパイル/テスト
- 29. 複数のターゲットプラットフォームに対する統合テストを実行
- 30. 2つのリンクサーバーに対して複数のSQL Serverクエリを実行
ありがとうございます。残念ながら、Javaは私の専門知識の範囲外です。 – alexk