プロが教える店舗&オフィスのセキュリティ対策術

はじめまして。
レンタルサーバーで、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

A 回答 (2件)

phpMyAdminなら、MySQLのシステム変数の参照ができるでしょうか?


そこで、local infileがONになっているかどうか確認されてみてはどうでしょう?
どのバージョンからか、MySQLのデフォルトではLOCALがOFFになっているような
話を聞いたことが有ります。

構文的には、構造やデータ内容等状況が良くわからないのですが、
もしかしたら行末は、次のようになるかもしれないですね。
LINES TERMINATED BY '\r\n'

この回答への補足

ご回答ありがとうございます。
phpMyAdminでMySQLのシステム変数を参照してみたら、local infileはセッション値、グローバル値の両方の項目で、ONになっています。

動作テストのために作ったテーブルの構造は、2つのフィールドからなるテーブルです。
------------
ID | name
-------------

インポートするファイルは、カンマ区切りで、ファイルの保存するときに、エンコードの種類は、日本語(EUC)の改行コードは、LFで保存してあります。

宜しくお願い致します。

補足日時:2006/09/28 11:09
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/10/04 14:22

>分割するのが面倒なので、1回でインポートできないか



そういう理由であれば、その他の方法はもっと面倒なので
やめたほうがよいでしょう。
どうしてもとのことであればメニューにあるようにgzip
で圧縮してsql文を送るというのが妥当かと。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/10/04 14:25

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