以下の機能をPythonのスクリプトで作成しています。
-
【MySQLのみ対応】 接続先のデータベースからDDLファイルを作成する。(
create_ddlモジュール)- 複数データベース、テーブル指定/除外に対応しています。
- 複数データベース、テーブル指定/除外に対応しています。
-
【MySQLのみ対応】 指定ビューを構成するテーブルの一覧をテキストファイルへ出力する。(
create_view_dependant_table_listモジュール) -
【MySQLのみ対応】 接続先のデータベースからDMLの作成元となるxlsxファイルを作成する。(
create_dml_source_xlsxモジュール)- A5:SQL Mk-2 のエンティティ定義CSVを出力する機能を参考にしました。
- A5:SQL Mk-2 のエンティティ定義CSVを出力する機能を参考にしました。
-
xlsxファイルに設定したデータを元にINSERT文のDMLファイルを作成する。(
create_dmlモジュール)- 次のRDBMSに対応: MySQL, PostgreSQL, Oracle Database, SQL Server, Db2
- 次のRDBMSに対応: MySQL, PostgreSQL, Oracle Database, SQL Server, Db2
-
【MySQLのみ対応】 指定フォルダー配下のSQLファイルを再帰的に実行する。(
execute_sqlモジュール) -
【MySQLのみ対応】 接続先のデータベースから DBUnit 用のFlatXMLファイルを出力する。(
export_dbunit_flatxmlモジュール)- DBeaver にもDBUnit用のFlatXMLをエクスポートする機能はありますが、複数テーブルを一括でエクスポートするにはデータベースナビゲータで対象のテーブルを全選択する必要があったり、カラムのデータ型がjsonの場合に引用符のエスケープが適切に行われないなどの使いづらさがありました。
そのため、jsonカラムの引用符エスケープに対応した一括エクスポート機能を作成しました。
- DBeaver にもDBUnit用のFlatXMLをエクスポートする機能はありますが、複数テーブルを一括でエクスポートするにはデータベースナビゲータで対象のテーブルを全選択する必要があったり、カラムのデータ型がjsonの場合に引用符のエスケープが適切に行われないなどの使いづらさがありました。
そのため、jsonカラムの引用符エスケープに対応した一括エクスポート機能を作成しました。
ライブラリの管理に Poetry を使っています。
以下のコマンドを実行してください。
poetry config virtualenvs.in-project true
poetry install --no-root- Windowsの場合
.venv\Scripts\activate- Linux, macOSの場合
.venv/Scripts/activate| モジュール | 当スクリプト制御用設定ファイル | DB接続用設定ファイル |
|---|---|---|
| create_ddl | - | ○ |
| create_dml_source_xlsx | ○ | ○ |
| create_dml | ○ | - |
| execute_sql | - | ○ |
| export_dbunit_flatxml | - | ○ |
- 各種コマンドの実行時に設定ファイルのパスを指定しない場合:
app_config-sample.jsonを同じ階層にapp_config.jsonとしてコピー - 各種コマンドの実行時に設定ファイルのパスを指定する場合:
app_config-sample.jsonを任意のパスにコピー(ファイル名も別名に変更可)
当ファイルの設定内容については、別紙「当スクリプト制御用設定ファイルの説明」を参照してください。
- 各種コマンドの実行時に設定ファイルのパスを指定しない場合:
db_config-sample.jsonを同じ階層にdb_config.jsonとしてコピー - 各種コマンドの実行時に設定ファイルのパスを指定する場合:
db_config-sample.jsonを任意のパスにコピー(ファイル名も別名に変更可)
それぞれ別紙を参照してください。
- 指定ビューを構成するテーブルの一覧をテキストファイルへ出力する処理(
create_view_dependant_table_listモジュール) - 接続先のデータベースからDDLファイルを作成する処理(
create_ddlモジュール) - 接続先のデータベースからDMLの作成元となるxlsxファイルを作成する処理(
create_dml_source_xlsxモジュール) - xlsxファイルからDMLファイルを出力する処理(
create_dmlモジュール) - 指定フォルダー配下のSQLファイルを再帰的に実行する処理(
execute_sqlモジュール) - 接続先のデータベースからDBUnit用のFlatXMLファイルを出力する処理(
export_dbunit_flatxmlモジュール)
sample フォルダ配下に、DBeaver Community のサンプル データベース(H2)の各RDBMS向けER図、DMLファイル作成元xlsx、SQLファイルを格納しています。
sample/common/dbeaver_sample_db_data_with_domain_data_type_without_nvarchar.xlsx- A5:SQL のドメインデータ型を使っているので、Db2・MySQL・PostgreSQLで使えます。