localeがUTF-8の環境でEUC_JPのデータベースを作成するの続きです。
テーブル数がそれほど多くない環境での作業です。
もっと良い方法があったらぜひ教えてください。
それぞれの環境は以下の通りです。
【旧システム】 PostgreSQL、EUC_JP(locale、データベースの文字コードとも)
【新システム】 MySQL、UTF-8(locale、データベースの文字コードとも)
まず、【旧システム】での作業です。
- テーブル毎にcsvファイルを作成します。例として、テーブル名をcrestboz、csvファイル名をcrestboz.csvとします。
1$ psql -U (ユーザ名) (データベース名) -c "SELECT * FROM crestboz" -A -F, > crestboz.csv
この時点で、crestboz.csvの文字コードはEUC_JPです。
- 作成したcrestboz.csvから、先頭のカラム名が記述された行と最後尾の行数が記述された行を削除します。
- ファイルの文字コードをUTF-8に変換します。
1$ nkf -w crestboz.csv > crestboz.utf8.csv
次に、【新システム】での作業です。
- データのインポート対象のテーブルが既存の場合はDELETEします。
(*テーブルをDROPして作成し直すと、ID値がリセットされます。) - csvファイルをインポートします。
12$ mysql --local_infile=1 -u (ユーザ名) -p (データベース名)mysql> load data local infile 'crestboz.utf8.csv' into table crestboz fields terminated by ',';
以上の作業を、データを移行するすべてのテーブルについて実行します。