{"id":21189677,"url":"https://github.com/sky0621/work-dbrecordgentool","last_synced_at":"2025-07-17T02:41:33.865Z","repository":{"id":90296239,"uuid":"64087415","full_name":"sky0621/work-dbrecordgentool","owner":"sky0621","description":"DBレコードの自動生成ツール","archived":false,"fork":false,"pushed_at":"2023-07-07T21:17:45.000Z","size":14166,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-21T13:28:00.286Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sky0621.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-07-24T21:55:05.000Z","updated_at":"2016-07-25T15:17:27.000Z","dependencies_parsed_at":"2023-03-13T17:59:05.933Z","dependency_job_id":null,"html_url":"https://github.com/sky0621/work-dbrecordgentool","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sky0621%2Fwork-dbrecordgentool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sky0621%2Fwork-dbrecordgentool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sky0621%2Fwork-dbrecordgentool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sky0621%2Fwork-dbrecordgentool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sky0621","download_url":"https://codeload.github.com/sky0621/work-dbrecordgentool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243646520,"owners_count":20324582,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-20T18:53:29.305Z","updated_at":"2025-03-14T20:43:23.527Z","avatar_url":"https://github.com/sky0621.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DBレコード自動投入ツール（というかEclipseプロジェクト）\n## ■言語・ツール・開発環境\n###### Java/Eclipse/S2JDBC-Gen/DBSetup\n## ■修正履歴\n###### 2016/08/01 公開\n## ■紹介\n###### なにかしら動作確認するのにDBへのデータ投入は必須。（特に自分用のお店やら、それに関連するデータの用意やら）\n###### Excelとかで投入データを作っても、１回作ったら終わりでなく、どれかのテーブル定義が変わったら（カラム増えたり減ったり）つど、Excel修正が必要。（そもそもテーブル定義変わったかどうか、Excelで作ったデータを投入しようとしてエラーになってはじめてわかる。。。）\n###### できれば、テーブル定義変わったら、それに合わせて投入するデータも変わるようなのが欲しい。ということで作りました。\n###### ※例によって、そもそも動かないみたいなバグもあるかもです・・・。\n###### 　_◇テーブル定義変わったかどうか_\n###### 　　　　　　・・・S2JDBC-GENの機能を使えば接続先DBのカタログテーブル見て最新化してくれる。\n###### 　　　　　　　　　※生成物を git 管理しておけばテーブル単位で何が変わったか差分として見れる。\n###### 　_◇テーブルごとにデータと抱き合わせてINSERTしたい（ついでに自分がINSERTしたデータは削除してから入れなおしたい）_\n###### 　　　　　　・・・DBSetUpというモジュール使えば、わりと楽に書ける。\n###### 　　　　　　　　　http://dbsetup.ninja-squad.com/\n###### 　　　　　　　　　http://qiita.com/ikemo/items/a27ece72fe2af3683ff6\n###### 　_◇もともとExcelで管理してた投入用データも生かしたい_\n###### 　　　　　　・・・INSERT時のテーブル名、カラム名はS2JDBC-GENの機能で最新をゲットし、投入するデフォルト値は型に応じて勝手に決めるが、別途、Excelで投入用データを与えた場合はそっちを生かすようにした。（POI使用）\n## ■ツールの使い方\n###### ツールというかEclipseプロジェクトとして使うので、ソースをチェックアウトしてください。\n###### 1. 既存Mavenプロジェクトとして取り込む。\n###### 2. プロジェクト直下の「src/main/resources/jdbc.dicon」を開いて、カタログ情報を見たいDBの接続先情報に直す。\n###### 3. プロジェクト直下の「s2jdbc-gen-build.xml」を開いて、「tableNamePattern=\"CM_S.*\"」と書いてあるところを自分がデータ投入したいテーブルに直す。\n###### 　※そもそも tableNamePattern 属性削れば全テーブルつくりにいくのですが、1000を超えるテーブル分のカタログ情報に属したデータをつくるのに・・・途方もない時間がかかりそう（私がローカルで100テーブルほどやろうとしたら10分くらいかかりました）　なので、せいぜい 100 テーブル分くらいがヒットする程度にした方がいいと思います。★正規表現使えます★\n###### 　※ちなみに、「overwrite=\"false\"」とあるように、同じ名前の生成物がある場合は上書きしない設定にしているので、同じテーブルのカタログ情報を作り直したい時は「overwrite=\"true\"」に直してください。\n###### 4. Antの機能を使って「s2jdbc-gen-build.xml」のタスクを実行する。　※コンソールにだらだら流れます。\n###### 5. 上記 4 が終わったら、プロジェクト直下の「src/main/java/xyz/skycat/work/dbrecordgentool/entity」を F5 最新化して、自分が想定したテーブル名を表すエンティティができているか確認する。\n###### 6. プロジェクト直下の「src/main/resources/config/targettables.txt」を開いて、データ投入したいテーブル名を表すエンティティクラス名を１行ごと列挙する。\n###### 7. プロジェクト直下の「src/main/resources/insertdata/data.xls」を開いて、テーブル名を表すエンティティクラス名ごとにシートを作成して、テーブルごとの投入したいデータを記載する。\n###### 　※理論上、シート名とカラム名が合っていれば、既存のExcelなどが流用できるはず。\n###### 　※NotNullカラムであっても、必ずExcel内に何かしらデータを記載する必要はない（※そこはツールが型に応じてデフォルト値を埋めるので）が、業務的に必要な値は当然入れる必要がある。\n###### 　　特に、Varcharなんだけど〇〇DATEとか付いているやつなど、ツール的には型がVarcharだからVarcharとしてデフォルト値入れるので。\n###### 　※投入先DBにあるレコードとPK重複するようなのがあると当然落ちる。\n###### 8. プロジェクト直下の「src/main/java/xyz/skycat/work/dbrecordgentool/Main.java」を実行する。\n###### 　※ただし、引数１個必ず求められるので、「実行の構成」でプログラムの引数として下記を指定してください。\n###### 　　★接続先DBへのデータ投入時に他のレコードと差別するため、INS_MODULE_ID カラムにここで指定した引数をセットします。★\n###### 　　★つまり、ここでセットした値が他のレコードと重複していると、このツールを使った結果、他の人のデータを入れ替えてしまうことになります。★\n###### 　　★自分にしか振られない、影響しないIDのような値を指定してください。プラグインIDみたいな。★\n###### 9. 接続先DBにデータが投入されているか確認する。\n## ■備考\n###### S2JDBC-GENがタスク実行時に統計情報にアクセスするようで、Oracleの場合、統計情報へのロックがかかっていると落ちる。\n###### 【ORA-38029: オブジェクト統計はロックされています】\n###### ロックされているかどうかは、select table_name, stattype_locked from dba_tab_statistics where owner = 'owner';　でわかる。ALL だとロックされてる。\n###### 　exec DBMS_STATS.UNLOCK_TABLE_STATS('owner','tablename');　でロック解除できるけど、全テーブル分やる必要がある・・・。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsky0621%2Fwork-dbrecordgentool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsky0621%2Fwork-dbrecordgentool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsky0621%2Fwork-dbrecordgentool/lists"}