Zenn
🐘

GoでPostgreSQLのマイグレーションツールをつくってみた

2025/03/29に公開

DBデータをマスクしつつ別のDBに移す必要があったのでつくりました。
ちゃんとしたつくりに変更するやカスタムするなど適宜使いやすいように修正してお使いください。誰かのお役に立てますと幸いです。

https://github.com/r9uk0/migration-psql-tool

目的

  • DBデータをマスクして取得したい
    • マスクしながら取得するなら事前にSQLを用意しておく必要がある(両端をxに置換)
  • 取得したデータを試験環境DBに流し込みたい

説明

環境構築

実行手順

  • app配下でのコマンド実行前提。
  • PJ直下に以下のような.envを配置しておく。
ENV=local
# 取得元のDB情報
SELECT_DB_HOST=DBホスト名
SELECT_DB_PORT=DBポート番号
SELECT_DB_USER=DB接続ユーザー
SELECT_DB_NAME=DB名
SELECT_DB_PASSWORD=DB接続パスワード

# 生成先のDB情報
INSERT_DB_HOST=DBホスト名
INSERT_DB_PORT=DBポート番号
INSERT_DB_USER=DB接続ユーザー
INSERT_DB_NAME=DB名
INSERT_DB_PASSWORD=DB接続パスワード

1.DBの最新データdump取得

go run main.go selectToDump

PJ直下に配置しておいた.envの情報(SELECT_XXXX)を読み込んで接続する。

2.DBのテーブルをtruncateしコピー

go run main.go dumpToInsert

PJ直下に配置しておいた.envの情報(INSERT_XXXX)を読み込んで接続する。
スキーマ名などは適宜修正する。

テーブル一覧

XXスキーマ

  • m_xxx

注意事項

環境差異のあるテーブルについては対象外とすること。

テーブル物理名 テーブル論理名 調査内容 移植可否
m_XXX XXXマスタ XXXのため ×

Discussion

ログインするとコメントできます