電子書籍の厳選無料作品が豊富!

先日から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

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

A 回答 (2件)

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

    • good
    • 0
この回答へのお礼

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

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

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

お礼日時:2011/08/19 15:59

>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
入力が全部 無視されているようで・・・原因が特定できないように思います。
    • good
    • 0
この回答へのお礼

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

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

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

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

お礼日時:2011/08/19 15:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!