MySQLで別のデータベースにまるっとコピーする
- DDL DML ともに別 Database にまるっと全消し上書きでコピーしたい。
- なんども行うのでスクリプトにしたい。
- わざわざ DB に入らなくてもよくしたい
- windows 環境で動くようにしたい
- mysql client は入ってる前提
スクリプト
mysql -h <host> -u <UserId> -p<password> -e"DROP DATABASE <移行先db>;CREATE DATABASE <移行先db> CHARACTER SET utf8;"
mysqldump.exe --default-character-set=binary -h <host> -u <UserId> --add-drop-table -p<password> <db> > dump.sql
mysql -h <host> -u <UserId> -p<password> --default-character-set=binary <移行先db> < dump.sql
前提としてmysql
, mysqldump
が入ってないと動かない
ハマったところ
- 基本的に文字コードがやっかい(DB の文字コードは utf8 にしている)
- 影響でないように Binary で export/import する。
- はじめ powershell でやろうとしてたけど、Powershell 側で処理した時点で文字列が UTF-16 になって、これまた文字コードが厄介
- cmd.exe を使う。苦肉