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

cronを使って、CSVファイルのデータをMYSQLへ定期的に投入したいのですが、
色々試行錯誤してみてもうまくいきません。

(試しにmkdirを実行し、cronが動作していることは確認済みです)

以下が試行錯誤の内容です。


【1】
MYSQLIMPORT文を使用。
mysqlimport --host=ホスト名 -u ユーザ名 --password=パスワード --local --replace DB名 "ファイル名(フルパス)"

SSHからの実行で動作確認をした文をそのままcronに登録しましたが、データは投入されず。


【2】
LOAD DATA INFILE文を使用

mysql --local-infile=1 --host=ホスト名 -u ユーザ名 --password=パスワード <<eof
use DB名;
LOAD DATA LOCAL INFILE 'ファイル名(フルパス)' INTO TABLE テーブル名 FIELDS TERMINATED BY ',';

命令はShellにまとめて書き、呼び出しました。
同様にSSHでは動作したものの、cronでは動作せず。


【3】
まずはDBを更新できるかどうかの確認を行うため、MYSQL接続とINSERT文をShellに書き出しました。

mysql --host=ホスト名 -u ユーザ名 --password=パスワード <<eof
use DB名;
INSERT INTO テーブル名 VALUES (1,1,1,1,1);

SSHで動作確認したShellをcronで実行させたが、更新されず。


【4】
PHPスクリプトの実行
PHPを使って更新出来ないかテスト。
こちらもSSHでは動作したものの、cronとなると動作せず。



単純なINSERT文すら実行出来ないことから、cronではレコードを更新できないのでは?と思い始めております。
なにか設定が必要だったり、見落としている点があれば、ご教授ください。


サーバーはさくらサーバーで、MYSQLのバージョンは4です。
cron以外での実装方法があれば、そちらも併せてご教授ください。

よろしくお願いします。

A 回答 (2件)

-e オプションを使ったらどうでしょう?



例) ----------------------------------------------------------------
mysql --local-infile=1 --host=ホスト名 -u ユーザ名 --password=パスワード -e "use DB名; LOAD DATA LOCAL INFILE 'ファイル名(フルパス)' INTO TABLE テーブル名 FIELDS TERMINATED BY ',';"
--------------------------------------------------------------------

参考URL:http://dev.mysql.com/doc/refman/5.1/ja/mysql-com …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
試してみましたが、こちらも同じく更新されませんでした・・・

お礼日時:2009/09/30 00:54

mysqlimport、mysqlに -s オプション付けてもだめでしょうか?


つまり、標準出力を抑制してみてください
    • good
    • 0
この回答へのお礼

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

うーん・・・
変化無しですね。

お礼日時:2009/09/29 23:26

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