• 締切済み

phpMyAdminでのデータのインポートについて

はじめまして。 レンタルサーバーで、MySQLを利用しています。 利用しているレンタルサーバーは、TELNETなどは利用できず、MySQLのデータベースを管理するのに、phpMyAdminを利用するようになっています。 用意したCSVファイルをサーバーのデータベースにインポートしたら、csvファイルが2MBを超えており、phpMyAdminの管理画面のインポートからは、2MB以内に分割しないとアップできませんでした。 分割するのが面倒なので、1回でインポートできないかと思い調べたら、 SQLで、LOAD DATA INFILE でインポートできないかと思い試してみました。 最初は、LOCALというのを入れずにやったらエラーが出たのですが、これは、同じサーバーにアップされたファイルからインポートというこなので、権限がないので無理ということがわかりました。 そこで、LOCALをつけて試しました。 ●試したSQLの内容 LOAD DATA LOCAL INFILE 'c:\mihon.txt' REPLACE INTO TABLE test FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; 上記をphpMyAdminのSQLのとろこで、実行したのですが、エラーなどは表示されずに完了するのですが、データはインポートされていませんでした。 レンタルサーバーで、phpMyAdminを利用している場合に、LOAD DATA INFILEでファイルをインポートできないのでしょうか?上記のSQLの書き方に問題があるのでしょうか? 初心者なのであまりうまく説明できませんが、大容量のCSVファイルをphpMyAdminからアップするには、なにかよい方法はありますでしょうか? ご回答よろしくお願い致します。 ●サーバーの環境 ・MySQL利用可能で、phpMyAdminでのみ利用可能 ・データベースは、ユーザーサーバーとは別に設置 ・MySQLのバージョンは、4.0.26 ・phpMyAdminのバージョンは、2.7.0

みんなの回答

  • Yeti21
  • ベストアンサー率47% (396/830)
回答No.2

phpMyAdminなら、MySQLのシステム変数の参照ができるでしょうか? そこで、local infileがONになっているかどうか確認されてみてはどうでしょう? どのバージョンからか、MySQLのデフォルトではLOCALがOFFになっているような 話を聞いたことが有ります。 構文的には、構造やデータ内容等状況が良くわからないのですが、 もしかしたら行末は、次のようになるかもしれないですね。 LINES TERMINATED BY '\r\n'

furafurasan
質問者

お礼

ご回答いただき、ありがとうございまいた。 なかなかうまく作動せず、PHPで1行ずつ追加する形で、なんとかやれるようになりました。 ありがとうございました。

furafurasan
質問者

補足

ご回答ありがとうございます。 phpMyAdminでMySQLのシステム変数を参照してみたら、local infileはセッション値、グローバル値の両方の項目で、ONになっています。 動作テストのために作ったテーブルの構造は、2つのフィールドからなるテーブルです。 ------------ ID | name ------------- インポートするファイルは、カンマ区切りで、ファイルの保存するときに、エンコードの種類は、日本語(EUC)の改行コードは、LFで保存してあります。 宜しくお願い致します。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>分割するのが面倒なので、1回でインポートできないか そういう理由であれば、その他の方法はもっと面倒なので やめたほうがよいでしょう。 どうしてもとのことであればメニューにあるようにgzip で圧縮してsql文を送るというのが妥当かと。

furafurasan
質問者

お礼

ご回答いただき、ありがとうございました。 まだまだ初心者で、思うようにできませんが、ご回答いただいた回答を参考に、がんばってやってみようと思います。 ありがとうございました。

関連するQ&A