2008年11月24日月曜日

MySQLに郵便番号データ(KEN_ALL.CSV)をインポートする方法

KEN_ALL.CSVを適切な文字コードに変換しておく。
変換方法は、http://jazz4no.blogspot.com/2008/11/phpmyadmincsv.html を参照


コマンドラインからMySQLにアクセス。
以下のコマンドでインポート。

LOAD DATA LOCAL INFILE '/path/KEN_ALL.CSV'
INTO TABLE `zip`
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"';

/path/ は自分の環境に合わせて変更する。
ちなみに、私の場合は、E:/xampp/mysql/ken_all/KEN_ALL.CSV

PHPMyAdminで、CSVファイルを文字化けさぜずにインポートする方法

Myadminのインポートの際に一番起きうる症状は、以下の2点かと思います。
・「CSV 入力のフィールド数が不正です (行: 1)」の表示が出て、インポートできない
・インポートしたのはいいが、文字化けしている。


もちろん、CSVで記録されているフィールドの数が、テーブル内のフィールド数と合っているにもかかわらず、です。それでは、対処方法を紹介します。

① まず、インポートしたいCSVファイルのファイル名末尾の.csvを.txtと替え、秀丸でファイルを開いて下さい。
② 秀丸のメニューボタン「ファイル」→「エンコードの種類」を選択。すると、エンコードの種類が選択できます。現時点では日本語(Shift_JIS)が選択されていると思います。これを、希望の文字コードに変更して下さい。今回はUnicode(UTF-8)に変換しました。その際に

「エンコードの種類が切り替わりました。操作を選択してください。」
1)ファイルを読み直す
2)内容を維持したまま適用
3)キャンセル

と、警告ウィンドウが表示されたので、「2)内容を維持したまま適用」を選択し、保存。

③ 先ほど.txtに変えたファイル名末尾を.csvに替えて下さい。これでExcelファイルに戻ったのですが、ファイルを開いて見て下さい。レコードの中身が日本が文字化けしていると思います。

ここからインポートの手続きに入ります。

④ テーブルを選択して、「インポート」を選択して下さい。
⑤ インポートするファイルを、「参照」ボタンから指定。
⑥ 「部分インポート」は、とりあえずそのまま。
⑦ 「インポートするファイルの形式」は、「LOAD DATA する CSV」を選択し、オプションの中身の「フィールド区切り記号」を「,」(カンマ)に変更。
⑧「実行する」を押します。