人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpでmysqlのデータベースを、SQL書き出し(できれば圧縮してZIPファイルとして保存)したいと思います。

書き出すときに、スタートレコード数と、全体で何レコード書き出すかを指定して、書き出しができないでしょうか?

具体的にphpでどう書くのかを知りたいです。

●質問者: dingding
●カテゴリ:インターネット ウェブ制作
✍キーワード:MySQL PHP SQL zip スタート
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Yota
●60ポイント

SELECT .....LIMIT.,. INTO OUTFILEでDBサーバのどこかにCSVファイルを吐き出しておいて、あとでLOAD DATA INFILEで戻すということでどうですか。

http://dev.mysql.com/doc/refman/4.1/ja/select.html

http://dev.mysql.com/doc/refman/4.1/ja/load-data.html

圧縮についてはgzopen,gzwrite,gzcloseなどを使うのでどうでしょう。

http://php.benscom.com/manual/ja/function.gzwrite.php

if (!$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {

echo 'Could not connect to mysql';

exit;

}

if (!mysql_select_db('mysql_dbname', $link)) {

echo 'Could not select database';

exit;

}

$sql = 'SELECT * FROM hoge ORDER BY 1 LIMIT 5,10 INTO OUTFILE 'c:/temp/backup.csv';

$result = mysql_query($sql, $link);

if (!$result) {

echo "DB Error, could not query the database\n";

echo 'MySQL Error: ' . mysql_error();

exit;

}

$filename = "c:/temp/bkup.csv" ;

$handle = fopen($filename, "r");

$contents = fread($handle, filesize($filename));

fclose($handle);

$gz = gzopen('c:/temp/bkup.gz','w9');

gzwrite($gz, $contents);

gzclose($gz);

?>

ただし、上記スクリプトはDBサーバとWEBサーバが同じマシンにありという前提で書いてあります。

◎質問者からの返答

ありがとうございます!

まさかこんなに直接的な答えをいただけるとはとても助かります。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ