みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPでMySQLのデータのインポート&SELECT結果のダウンロード

こんにちは。いつもここにはお世話になっています。
ご質問が何点かあって申し訳ないのですが、簡単に作ろうとしているスクリプトを説明すると一日一回夜中にCSVかTEXT形式でデータがアップされます。それをMysqlの指定したテーブルにインポートします。その際前日のデータは全て削除します。作られたCSVファイルも削除したいんです。翌日にそのインポートされたデータを検索し必要に応じて検索されたデータをダウンロードできるようにしたいんです。ダウンロードするファイルはCSVでファイル名はテーブル名に検索した時の時間をつけた名前。これを全てPHPで行いたいんです・・・。
現在検索とSSHでログインしてのMysqlにインポートはできました。ダウンロードはまだ挑戦していないのですが、まずファイルを作ることとPHPでのデータのインポートができるのかわかりません。
質問なのですが、
1.分かりにくいのですが、上記のようなことはPHPで可能でしょうか?

2.データのインポートはPHPではどのようにしたらいいのでしょうか?

3.テーブル内のデータの削除はDELETEを使えば可能なのはわかりましたが、指定したフォルダ内のファイルを削除する方法はありますか?

4.SELECTで検索したデータが画面に表示されダウンロードできるようにファイルを作るのに
$sql = "SELECT * FROM テーブル名 WHERE フィールド = \"条件\" ";
$sql .= "INTO OUTFILE \"/home/パス/テキスト.CSV(or txt)\"";
$res = mysql_query($sql);
とスクリプトを記述しましたが出来ませんでした。
SShでmysqlにログインをして
mysql> SELECT * FROM テーブル名 WHERE フィールド = '条件'
-> INTO OUTFILE '/home/パス/テキスト名.txt';
とするとできたのですが、単純にこれをSELECT等と同じようにしたらダメなのでしょうか?

質問が多く申し訳ないのですが、ご教授をよろしくお願いします。

投稿日時 - 2004-11-18 17:19:41

QNo.1090002

すぐに回答ほしいです

質問者が選んだベストアンサー

PHPはスクリプト言語であるため、何らかのアクション(通常はWebへのアクセス)をトリガーにして起動されます。
つまり、何らかのアクションがなければ、自動的にPHPを動かすと言うことは不可能です。(cronはアクセスを自動しようと言うことです)
現在何らかの方法で、WebサーバーにPHPをUPしていると思いますが、そのUSERで、SSHなりTELNETなりで、サーバーにはログインできないのですか?
出来なければ、cronは利用できません。

私には他の方法が思いつきません(^^;

投稿日時 - 2004-11-20 20:46:13

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

的はずれかもしれませんが、「時間を取得してある時間になればデータがインポート」と言うのは、「ある一定の時間に、なれば自動的にデータをインポートしたい」という事でしょうか?
もしそれなら、時間になれば、そのPHPにたいして何らかのキックが必要です。
Linuxサーバーであれば、通常はcronを利用するのですが、そう言ったたぐいの話ですか?

投稿日時 - 2004-11-19 18:57:23

お礼

はい、まさしくそういったことです。データの更新が真夜中になってしまいますので、そのようなことをしたいのです。
Linuxサーバーですが、cronとはLinuxの機能を使うということでしょうか?
Linuxそのものにおける権限は持っていないので、Linuxを動作してどうこうってのはできないのですが、可能でしょうか?

投稿日時 - 2004-11-19 19:14:46

ANo.1

1.出来ます

2.CSVファイルをfile関数で配列に取り込み、ループさせてinsertしていけばいいです。

3.指定したディレクトリが、httpユーザーに書込権限があれば、unlinkで削除出来ます。

4.??ちょっと意味が分かりません。

投稿日時 - 2004-11-19 11:11:10

お礼

ありがとうございます。
上記の質問は何故かほとんど解決できました・・・。
後は時間を取得してある時間になればデータがインポートできればとりあえずは完成なのですが・・・。データのインポートができません。いろいろと調べた結果
LOAD DATA LOCAL INFILE "ファイル" INTO TABLE テーブル名";
関数をPHPで動作させたらよいらしく
$sql = "LOAD DATA LOCAL INFILE "ファイル" INTO TABLE テーブル名";
$rs = mysql_db_query($db,$sql);
としたのですが、何故かダメでした・・・。
何かどうにかローカル環境からデータをインポートしたいのですが、手はありませんか?

投稿日時 - 2004-11-19 17:16:44

あなたにオススメの質問