CSV形式のファイルからデータを取り込む
大口事業所番号データをMySQLに取り込む1.データのダウンロードファイルはCSV形式になっています。事業所の個別郵便番号データダウンロードページから大口事業所個別番号データをダウンロードする。2.MySQLにデータを取り込むテーブルを作成する。以下の内容をjigyosyo_master.sqlというファイルに保存する。#から始まる行はコメントで、ダウンロードページにある説明文です。# 1 大口事業所の所在地のJISコード(5バイト)# 2 大口事業所名(カナ)(100バイト)# 3 大口事業所名(漢字)(160バイト)# 4 都道府県名(漢字)(8バイト)# 5 市区町村名(漢字)(24バイト)# 6 町域名(漢字)(24バイト)# 7 小字名、丁目、番地等(漢字)(124バイト)# 8 大口事業所個別番号(7バイト)# 9 旧郵便番号(5バイト)# 10 取扱支店名(漢字)(40バイト)# 11 個別番号の種別の表示(1バイト)# 「0」大口事業所# 「1」私書箱# 12 複数番号の有無(1バイト)# 「0」複数番号無し# 「1」複数番号を設定している場合の個別番号の1# 「2」複数番号を設定している場合の個別番号の2# 「3」複数番号を設定している場合の個別番号の3## 一つの事業所が同一種別の個別番号を複数持つ場合に複数番号を設定しているものとします。# 従って、一つの事業所で大口事業所、私書箱の個別番号をそれぞれ一つづつ設定している場合は12)は「0」となります。## 13 修正コード(1バイト)# 「0」修正なし# 「1」新規追加# 「5」廃止 create table jigyosyo_master ( id int(11) not null AUTO_INCREMENT, jis_code varchar(10), jigyosyo_kana varchar(200), jigyosyo_kanji varchar(320), jusho1 varchar(16), jusho2 varchar(48), jusho3 varchar(48), jusho4 varchar(248), yubin_no varchar(14), old_yubin_no varchar(10), siten_kanji varchar(80), syubetsu varchar(2), fukusu_code varchar(2), syusei_code varchar(2), primary key (id), index mst_yubin_i1 (yubin_no))AUTO_INCREMENT=1;3.テーブルを作成する。mysql> source c:/tmp/jigyosyo_master.sqlQuery OK, 0 rows affected (0.06 sec)mysql> desc jigyosyo_master;+----------------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+----------------+--------------+------+-----+---------+----------------+| id | int(11) | NO | PRI | NULL | auto_increment || jis_code | varchar(10) | YES | | NULL | || jigyosyo_kana | varchar(200) | YES | | NULL | || jigyosyo_kanji | varchar(320) | YES | | NULL | || jusho1 | varchar(16) | YES | | NULL | || jusho2 | varchar(48) | YES | | NULL | || jusho3 | varchar(48) | YES | | NULL | || jusho4 | varchar(248) | YES | | NULL | || yubin_no | varchar(14) | YES | MUL | NULL | || old_yubin_no | varchar(10) | YES | | NULL | || siten_kanji | varchar(80) | YES | | NULL | || syubetsu | varchar(2) | YES | | NULL | || fukusu_code | varchar(2) | YES | | NULL | || syusei_code | varchar(2) | YES | | NULL | |+----------------+--------------+------+-----+---------+----------------+14 rows in set (0.11 sec)4.CSVファイルを取り込む。1点留意点があります。JIGYOSYO.CSVの文字コードが(おそらく)SJISになっていると思いますが、テーブルの文字コードがSJIS(CP932)以外の場合、エラーが発生してロードできません。なので、テーブルの文字コードがUTF-8の場合は、JIGYOSYO.CSVの文字コードをSJISからUTF-8に変換しておきます。テーブルの文字コードを確認するには.mysql> show create table jigyosyo_master;以下の内容をload_jigyosyo.sqlというファイルに保存する。load data infile 'c:/temp/JIGYOSYO.CSV'into table jigyosyo_masterfields terminated by ',' OPTIONALLY ENCLOSED BY '"'lines TERMINATED BY '\r\n'(jis_code,jigyosyo_kana,jigyosyo_kanji,jusho1,jusho2,jusho3,jusho4,yubin_no,old_yubin_no,siten_kanji,syubetsu,fukusu_code,syusei_code);※jigyosyo_masterテーブルには、idというCSVファイルには無い項目があるので、最終行(jis_code,jigyosyo_kana,...)を指定して、CSVファイルの項目とテーブルの項目を一致させておきます。プロンプトからload_jigyosyo.sqlを実行する。mysql> source c:/tmp/load_jigyosyo.sqlQuery OK, 21249 rows affected (0.03 sec)Records: 21249 Deleted: 0 Skipped: 0 Warnings: 05.検索してみるそのままだと、日本語が文字化けを起こすのでクライアントの文字コードを変えます。limit句で10件のみ選択しています。mysql> set NAMES cp932;mysql> select * from jigyosyo_master limit 10;