シェルスクリプト

MySQLのデータベースをインポートする際に存在するテーブルのレコードを削除せずにALTER文を作成、実行するスクリプトを作った

先月末に数学のテストを終えました。 C単位は降ってきてほしいと切に願います。 あと、中間発表を控えてます。   背景 ステージング環境のDBをプロダクション環境のDBへインポートする際に レコードを消すわけには行かず ・プロダクションにないテーブルは作成 ・すでに存在するテーブルはステージングとプロダクションの差異のALTER文を作成して実行 ということを実現したいと思っていたところ ・Workbench ・Schemea Sync ・手動 のどれかが解決方法らしい。 Workbenchを使うとうまく行かず、Schema Syncは導入が面倒、手動も面倒ということで シェルスクリプトで作ってみた。   schemaSync – シェルスクリプト https://gist.github.com/rluisr/ace0513d0251d6ceb2a093cf23b6dafb できること ・宛先DBにないテーブルを作成 ・宛先DBに既にあるテーブルはソース元と差異を取得してALTER文を作成、実行 ・AUTO_INCREMENTの値は不変 できないこと ・SSL ・テーブルオプション(文字コード等)の変更はされない 必要なコマンド ・mysql ・mysqldump ・mysqldiff   前準備 ソースのテーブル構造   宛先のテーブル構図 modifyがありません。   宛先テーブルにはレコードを追加しておきます。   ソースには追加でテーブルを1つ作り、計2つ   宛先DBのテーブルはそのまま1つ   実行する [crayon-5b4f00c710654039252599/] 最後にALTER文1つずつに確認画面がでるので 確認しながら実行できまできます。   宛先DBにソースのテーブルが作成される。   どちらにも存在したusersテーブルはレコードが削除されることなく ソースで追加したmodifyカラムが追加されました。 割りと実現したいことはできたかも。 他のエラー文を残したまま、WARNING文(パスワードをコマンドに書くな)無視はいつかやろうと思う。 本番環境で使ってみようと思います。 あ、これを使って生じた如何なる問題も僕は責任を持ちません。