みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

CSVファイルをMYSQLにインポート

先日からMYSQL+PHPの勉強をはじめました。

データベース構築の際、以前作成したCSVファイルをMYSQLのテーブルとして
利用したいと考えております。

そこで、MYSQLコマンドより、
LOAD DATA LOCAL INFILE 'ファイル名.csv' INTO TABLE テーブル名
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';

Query OK, 0 rows affected (0.04 sec)
Records: 102 Deleted: 0 Skipped: 102 Warnings: 0

とCSVファイル自体が悪いのかSQL文に問題がるのかインポートがうまくいきません。。
ちなみにCSVは 

0,2011/6/2 0:00,80.94,81.32,80.55,80.92
0,2011/5/25 0:00,81.94,82.17,81.8,81.95
0,2011/5/23 0:00,81.77,82.04,81.32,81.99

環境はphpdevで一括でインストールした
phpadmin: バージョン2.3.2
MYSQL: MySQL4
apache: 1.3.27

初心者で基本的な質問かもしれないですがどうかご教授お願いします。

投稿日時 - 2011-08-19 13:49:27

QNo.6953087

困ってます

質問者が選んだベストアンサー

先頭の項目が主キーですでに0が登録済みというオチはないですよね。

投稿日時 - 2011-08-19 15:16:40

お礼

回答ありがとうございます。

まさにご指摘どおりテーブルに以前、何かで
登録したままのNo0が残っておりました。。

まさかこんなことが原因だったんですね;
ありがとうございました。

投稿日時 - 2011-08-19 15:59:18

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>0,2011/6/2 0:00,80.94,81.32,80.55,80.92
>0,2011/5/25 0:00,81.94,82.17,81.8,81.95
>0,2011/5/23 0:00,81.77,82.04,81.32,81.99
ちょっと文字列変換してSQL文を作っては如何ですか?
Perlなどで文字列処理すれば簡単にSQLを作れますよ ^ ^

1.フィールドの順番にCSVが並んでいるなら
INSERT INTO TAB01 VALUES( '0', '2011/6/2 0:00', '80.94', '81.32', '80.55', '80.92' );


2.フィールドの順番とは違う場合は、
INSERT INTO TAB01 (id, date, f1, f2, f3, f4) VALUES( '0', '2011/6/2 0:00', '80.94', '81.32', '80.55', '80.92' );


>Query OK, 0 rows affected (0.04 sec)
>Records: 102 Deleted: 0 Skipped: 102 Warnings: 0
入力が全部 無視されているようで・・・原因が特定できないように思います。

投稿日時 - 2011-08-19 14:47:31

お礼

回答ありがとうございます。

上に書いて頂いたINSERTで実行したところ
No2さんのご指摘どおりテーブルにID.0が登録されたままになって
おり登録できませんでした^^;

テーブルを修正し、CSVファイルにNoをふったところ
うまくインサートできました。

ごていねいにありとうございました。

投稿日時 - 2011-08-19 15:56:10

あなたにオススメの質問