--- title: CSVファイルからDBにデータを登録する author: kazu634 date: 2009-07-11 url: /2009/07/11/_1293/ wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4701;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - mysql ---
「MySQL初心者入門講座: Step4・ファイルからデータを取り込む」を参考して、CSVファイルからデータをDBに登録してみました。
作成するのは次のようなテーブルです:
項目番号 | 店名 | 住所 |
---|---|---|
1 | 喫茶室ルノアール 池袋東口店 | 東京都豊島区東池袋1-40-2 |
用意したのは次のcsvファイルです:
1, 喫茶室ルノアール 池袋東口店, 東京都豊島区東池袋1-40-2 2, 喫茶室ルノアール 池袋パルコ横店, 東京都豊島区東池袋1-42-8 3, 喫茶室ルノアール 巣鴨駅前店, 東京都豊島区巣鴨1-15-1 4, 喫茶室ルノアール 本郷三丁目店, 東京都文京区本郷4-37-13 5, 喫茶室ルノアール 大崎ニューシティ店, 東京都品川区大崎1-6-4 6, 喫茶室ルノアール 中野北口店, 東京都中野区中野5-61-2 7, 喫茶室ルノアール 中野サンプラザ前店, 東京都中野区中野5-67-5 8, 喫茶室ルノアール 銀座2丁目店, 東京都中央区銀座2-7-18 9, 喫茶室ルノアール 西銀座店, 東京都中央区銀座2-5-5 10, 喫茶室ルノアール ニュー銀座店, 東京都中央区銀座2-8-15 11, 喫茶室ルノアール 銀座昭和通り店, 東京都中央区銀座2-11-6 12, 喫茶室ルノアール 銀座松屋通り店, 東京都中央区銀座3-3-11 13, 喫茶室ルノアール 銀座6丁目店, 東京都中央区銀座6-12-10 14, 喫茶室ルノアール 歌舞伎座前店, 東京都中央区銀座5-15-1 15, 喫茶室ルノアール 日本橋高島屋前店, 東京都中央区日本橋2-3-6 16, CafeRenoir 日本橋三越前店, 東京都中央区日本橋本町1-1 17, 喫茶室ルノアール 東京駅八重洲北口店, 東京都中央区八重洲1-6-17 18, CafeRenoir ニュー八重洲北口店, 東京都中央区八重洲1-7-4 19, 喫茶室ルノアール 大森駅前店, 東京都大田区大森北1-1-10 20, 喫茶室ルノアール 蒲田西口店, 東京都大田区西蒲田8-1-7 21, CafeRenoir 御徒町春日通り店, 東京都台東区上野6-1-1 22, 喫茶室ルノアール 上野しのばず口店, 東京都台東区上野4-10-7 23, CafeRenoir 上野公園前店, 東京都台東区上野2-13-13 24, 喫茶室ルノアール 日暮里谷中店, 東京都台東区谷中7-20-6 25, 喫茶室ルノアール 市ヶ谷駅前店, 東京都千代田区五番町 26, 喫茶室ルノアール 飯田橋西口店, 東京都千代田区富士見2-2-6 27, 喫茶室ルノアール 水道橋西口店, 東京都千代田区三崎町3-6-13 28, 喫茶室ルノアール 神田西口店, 東京都千代田区内神田2-9-9 29, 喫茶室ルノアール 神田北口駅前店, 東京都千代田区内神田3-21-8 30, 喫茶室ルノアール 神田南口駅前店, 東京都千代田区鍛冶町2-1-4 31, CafeRenoir 日比谷店, 東京都千代田区有楽町1-6-1 32, 喫茶室ルノアール ニュー秋葉原店, 東京都千代田区外神田1-16-10 33, 喫茶室ルノアール 秋葉原店, 東京都千代田区外神田1-11-6 34, CafeRenoir 秋葉原昭和通り口店, 東京都千代田区神田佐久間町1-18 35, 喫茶室ルノアール 阿佐ヶ谷駅前店, 東京都杉並区阿佐ヶ谷南2-14-10 36 喫茶室ルノアール 高円寺北口駅前店, 東京都杉並区高円寺北2-4-4 37, 喫茶室ルノアール 新宿西口エステックビル店, 東京都新宿区西新宿1-24-1 38, 喫茶室ルノアール 新宿西口駅前店, 東京都新宿区西新宿1-17-1 39, 喫茶室ルノアール 新宿ハルク横店, 東京都新宿区西新宿1-5-11 40, 喫茶室ルノアール 西新宿西鉄イン店, 東京都新宿区西新宿7-23-2 41, 喫茶室ルノアール 新宿3丁目ビッグスビル店, 東京都新宿区新宿2-19-1 42, 喫茶室ルノアール ニュー新宿3丁目店, 東京都新宿区新宿3-4-1 43, 喫茶室ルノアール 市ヶ谷外堀通り店, 東京都新宿区市谷田町1-3 44, 喫茶室ルノアール 四谷店, 東京都新宿区四谷1-3-22 45, 喫茶室ルノアール 新宿区役所横店, 東京都新宿区歌舞伎町1-3-5 46, 喫茶室ルノアール 新宿歌舞伎町店, 東京都新宿区歌舞伎町1-14-4 47, 喫茶室ルノアール 西武新宿駅前店, 東京都新宿区歌舞伎町1-26-6 48, 喫茶室ルノアール 新宿大ガード店, 東京都新宿区西新宿7-1-1 49, 喫茶室ルノアール 新宿小滝橋通り店, 東京都新宿区西新宿7-9-7 50, 喫茶室ルノアール 大久保店, 東京都新宿区百人町1-18-8 51, 喫茶室ルノアール 新大久保駅前店, 東京都新宿区百人町2-11-25 52, 喫茶室ルノアール ニュー高田馬場店, 東京都新宿区高田馬場2-18-6 53, 喫茶室ルノアール 高田馬場早稲田通り店, 東京都新宿区高田馬場2-14-2 54, 喫茶室ルノアール 高田馬場ビッグボックス横店, 東京都新宿区高田馬場1-34-8 55, 喫茶室ルノアール 高田馬場第一店, 東京都新宿区高田馬場1-34-12 56, 喫茶室ルノアール 代々木西口駅前店, 東京都渋谷区代々木1-30-6 57, 喫茶室ルノアール 千駄ヶ谷駅前店, 東京都渋谷区千駄ヶ谷1-30-8 58, 喫茶室ルノアール 渋谷南口店, 東京都渋谷区桜丘町15-15 59, 喫茶室ルノアール 渋谷シオノギビル店, 東京都渋谷区渋谷2-17-5 60, 喫茶室ルノアール 渋谷東急ハンズ前店, 東京都渋谷区宇田川町36-2 61, 喫茶室ルノアール 渋谷宮下公園店, 東京都渋谷区渋谷1-16-14 62, 喫茶室ルノアール 西日暮里第一店, 東京都荒川区西日暮里5-23-6 63, 喫茶室ルノアール 日暮里東口店, 東京都荒川区東日暮里5-51-11 64, 喫茶室ルノアール 赤坂見附店, 東京都港区赤坂3-10-2 65, 喫茶室ルノアール 新橋サンルート店, 東京都港区新橋4-10-2 66, 喫茶室ルノアール 新橋第一ホテル横店, 東京都港区新橋1-17-2 67, 喫茶室ルノアール 田町三田口駅前店, 東京都港区芝5-34-7 68, 喫茶室ルノアール 芝大門店, 東京都港区芝大門2-3-1 69, 喫茶室ルノアール 品川港南口店, 東京都港区港南2-3-29 70, 喫茶室ルノアール 品川高輪口店, 東京都港区高輪3-25-22 71, 喫茶室ルノアール 亀戸駅前店, 東京都江東区亀戸2-20-7 72, 喫茶室ルノアール 金町店, 東京都葛飾区東金町1-42 73, 喫茶室ルノアール 立川南口店, 東京都立川市柴崎町3-4-14 74, 喫茶室ルノアール 立川駅前店, 東京都立川市曙町2-13-10 75, 喫茶室ルノアール 立川店, 東京都立川市曙町2-9-1 76, 喫茶室ルノアール 三鷹北口駅前店, 東京都武蔵野市中町1-6-7 77, 喫茶室ルノアール 横浜元町店, 神奈川県横浜市中区元町1-18 78, 喫茶室ルノアール 横浜関内駅前店, 神奈川県横浜市中区港町2-6 79, 喫茶室ルノアール 横浜伊勢佐木町店, 神奈川県横浜市中区伊勢佐木町2-66 80, 喫茶室ルノアール 鶴見駅前店, 神奈川県横浜市鶴見区鶴見中央1-3-3 81, 喫茶室ルノアール 鎌倉駅前店, 神奈川県鎌倉市小町1-6-19 82, 喫茶室ルノアール 大船店, 神奈川県鎌倉市大船1-7-1 83, 喫茶室ルノアール 川崎銀柳街店, 神奈川県川崎市川崎区駅前本町3-3 84, 喫茶室ルノアール 京急川崎駅前店, 神奈川県川崎市川崎区砂子1-1-10 85, 喫茶室ルノアール 箱根湯本駅前店, 神奈川県足柄下郡箱根町湯本白石下706-35 86, 喫茶室ルノアール 川越店, 埼玉県川越市脇田町103 87, 喫茶室ルノアール 本八幡店, 千葉県市川市八幡2-6-15
以下のようにして登録してみたのですが、なぜかうまくいきませんでした。
kazu634@kazu634-desktop% mysql -u root -p ~/work/googlemaps [3036] Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 59 Server version: 5.0.75-0ubuntu10.2 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> CREATE TABLE Shop ( -> SHOP_CD INT(3), -> SHOP_NAME VARCHAR(50), -> PRIMARY KEY(SHOP_CD)); Query OK, rows affected (.01 sec) mysql> SHOW TABLES; +------------------+ | Tables_in_sample | +------------------+ | Shop | +------------------+ 1 row in set (.00 sec) mysql> use Shop; ERROR 1049 (42000): Unknown database 'Shop' mysql> SELECT * FROM Shop; Empty set (.00 sec) mysql> LOAD DATA INFILE "data.csv" -> INTO TABLE Shop FIELDS TERMINATED BY "," -> LINE TERMINATED BY "\n"; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LINE TERMINATED BY "\n"' at line 3 mysql> LOAD DATA INFILE "data.csv" -> INTO TABLE Shop FIELDS TERMINATED BY "," -> LINES TERMINATED BY "\n"; ERROR 29 (HY000): File '/var/lib/mysql/sample/data.csv' not found (Errcode: 2) mysql> LOAD DATA INFILE "~/work/googlemaps/data.csv" -> INTO TABLE Shop FIELDS TERMINATED BY "," -> LINES TERMINATED BY "\n"; ERROR 13 (HY000): Can't get stat of '/etc/mysql/work/googlemaps/data.csv' (Errcode: 2) mysql> LOAD DATA INFILE "/home/kazu634/work/googlemaps/data.csv" -> INTO TABLE Shop FIELDS TERMINATED BY "," -> LINES TERMINATED BY "\n"; ERROR 29 (HY000): File '/home/kazu634/work/googlemaps/data.csv' not found (Errcode: 13) mysql> LOAD DATA INFILE "/home/kazu634/work/googlemaps/data.csv" -> INTO TABLE Shop FIELDS TERMINATED BY ","; ERROR 29 (HY000): File '/home/kazu634/work/googlemaps/data.csv' not found (Errcode: 13)
どうやらカレントパス上のファイルを指定するためには、「LOAD DATA LOCAL INFILE」というように指定すればいいようです。すると、以下のようになって成功しました。
mysql> load data local infile "data.csv" into table Shop; Query OK, 87 rows affected, 174 warnings (.00 sec) Records: 87 Deleted: Skipped: Warnings: 174 mysql> exit Bye
カレントパス上のファイルを指定してDBに登録するためには次のように行います:
mysql> LOAD DATA LOCAL INFILE "data.csv" INTO TABLE Shop -> INTO TABLE Shop FIELDS TERMINATED BY ",";