5

データベースのスキーマをインストール スクリプトの SQL と比較できるツールを作成しようとしています。データベースから情報を取得するのは非常に簡単ですが、インストール スクリプトの解析に少し問題があります。

Google に表示されるいくつかのパーサーで遊んでみましたが、それらはいくぶん不完全に見えました。理想的には、かなり安定していて、半分まともなドキュメントを備えたオープンソースのパーサーを見つけたいと思っています。

また、特定のデータベースに固有の型や構文についてはあまり気にしていません。チェックする必要があるデータベースは非常に単純です。

4

6 に答える 6

1

私はSQLCompareを使用ましたが、それは素晴らしいことです。

インストールスクリプトを実行して新しいデータベースを作成し、既存のデータベースを新しいデータベースと比較することができます。

于 2008-11-06T16:32:59.530 に答える
1

一般的な SQL パーサーはまともです。あなたはおそらくすでにそれを見つけているでしょうが、SQL は非常に単純であると言ったのに、それがあなたにとって何の役にも立たないのでしょうか?

于 2008-11-06T16:03:38.577 に答える
1

postgresql などの一部のデータベースでは、現在のスキーマを照会できます。したがって、別の方向に進むこともできます。スキーマを取得して SQL を解析しようとする代わりに、必要なフィールドとテーブルを照会する SQL ステートメントを作成して、それらがデータベースのスキーマにあるかどうかを確認できます。

以下に例を示します: postgresql スキーマ メタデータ

于 2008-11-06T16:04:40.557 に答える
0

テーブルを作成するためのDDLがある場合は、テーブル名を解析して、生成されたテーブル名の前に追加します。使用しているSQLエンジンに応じて、スキーマをクエリするさまざまな方法があります。

SQLiteの使用:

PRAGMA table_info(my_table)
PRAGMA table_info(temporary_my_table)

またはMySQLの場合:

 SELECT table_name, column_name, data_type
FROM information_schema.columns
WHERE table_schema = 'my_schema'
AND (table_name LIKE '%my_table';
于 2009-05-26T08:12:34.550 に答える
0

SQL Server は、この一部を実行できる場合があります。SDK を介してアクセスできる、非常に優れた依存関係ツリーを提供します。

于 2008-11-06T16:08:34.277 に答える
0

真剣に、特に単純なデータベースの場合、SQL Server には優れた SQL パーサーが組み込まれています。

スキーマを作成してロードします。データを比較し、完了したらスキーマを削除します。

DDL を実行するのが怖い場合は、軽量の組み込みサーバー (Java を実行している場合は Derby など) のいずれかを使用することをお勧めします。

次に、解析された SQL を取得し、今と同じようにテーブルにアクセスします。

データベースがあれば、それを活用することもできます。

于 2008-11-06T16:44:36.060 に答える