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

お世話になります。

CSV取り込みに関しての質問です。
以下の記述したphpファイルにてCSVの取り込みを行ったのですが、

$ld="LOAD DATA INFILE 'filepass/test.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' ";
$ld2=mysql_query($ld);
$inita=True;

読み込みが出来ません。
エラー文など一切出ません。
CSVファイルの場所は問題ありません。
またmysqlのテーブルのフィールド数も問題ないと思います。
mysqlへのログインも問題ないと思います。

何が問題か正直それすら思い浮かばず質問致しました。
何が原因で読み込みが出来ないのでしょうか?

思い当たることは一通り試しました。
どうかよろしくお願い申し上げます。

mysql ver 5.0.51a

A 回答 (2件)

私も以前はまりましたが、php プログラムソースからみた相対パスのファイルを読み込む時は、local指定が必要です


LOAD DATA local INFILE 'filename' /* 以降省略 */

あと、phpからのSQLエラーチェックは、mysql_error() で取得する必要があります。

この回答への補足

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

同じことを経験なされたのですね、頼もしいです!
ファイルの指定についてはフルパスで記述しました。

エラーチェックはまだ行っておりませんが、
phpmyadminから行ったところ以下のメッセージが出ました。


#1366 - Incorrect string value: '\x95{\x92\x86\x93X' for column 'hoge' at row 1


何か良い解決策がありましたら、ぜひ御教えいただければ幸いです。
自分も探します。
よろしくお願いします。

補足日時:2010/09/26 09:38
    • good
    • 0

コンソール上(あるいはphpMyAdmin)で、load data infile文を発行したら、エラー内容が分かるのではないでしょうか。


show errors;
show warnings;

ちなみに、ファイル名指定が相対パス指定でありますと、my.cnf(my.ini)のdatadir配下のものを探しに行きます。

この回答への補足

ご回答ありがとうございます。ファイル記述はフルパスで行っております。

phpmyadminにて行ったところ以下のメッセージが出ました。


#1366 - Incorrect string value: '\x95{\x92\x86\x93X' for column 'hoge' at row 1

調べてみましたところ、キャラクターセットに関するエラーらしいのですが・・
csvファイルを読み込ませる際にエンコードさせる必要があるということでしょうか?
サーバの文字セットはUTF-8 ファイルはS-jis

何か良い解決策がありましたら、御教えいただければと思います。
私も探してみます。

補足日時:2010/09/26 09:34
    • good
    • 0

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