- 締切済み
お世話になります。
お世話になります。 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
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mpro-gram
- ベストアンサー率74% (170/228)
私も以前はまりましたが、php プログラムソースからみた相対パスのファイルを読み込む時は、local指定が必要です LOAD DATA local INFILE 'filename' /* 以降省略 */ あと、phpからのSQLエラーチェックは、mysql_error() で取得する必要があります。
- moousi
- ベストアンサー率70% (21/30)
コンソール上(あるいは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 何か良い解決策がありましたら、御教えいただければと思います。 私も探してみます。
補足
ご回答ありがとうございます。 同じことを経験なされたのですね、頼もしいです! ファイルの指定についてはフルパスで記述しました。 エラーチェックはまだ行っておりませんが、 phpmyadminから行ったところ以下のメッセージが出ました。 #1366 - Incorrect string value: '\x95{\x92\x86\x93X' for column 'hoge' at row 1 何か良い解決策がありましたら、ぜひ御教えいただければ幸いです。 自分も探します。 よろしくお願いします。