我想要到了 mysqldump 的表备份最后一个记录

标签: MySQL PHP
发布时间: 2017/4/9 22:32:18
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

到目前为止一下︰

exec('mysqldump --user=$DBUSER --password=$DBPASSWD --host= localhost DB_NAME (select column from database.table where= column > 1234) > table.sql');

当然,我打开我使用浏览器的服务器上的文件时,没有反应。 现在下, 一个代码并输出一个 SQL 文件,但一个空︰

set_time_limit(600);
system("mysqldump -h localhost -u $DBUSER -p $DBPASSWD $DATABASE  > table.sql");

我后生成每一天的记录,所以我以后可以做增量备份。

为什么是它, system() 并输出文件和 exec() 不?

解决方法 1:

如果你的目标是要做您的数据库的增量备份 mysqldump 不是它的理想选择。

有两件事,你可以在这里︰

  1. [坏的方式]使用您的 PHP 代码来进行序列化和转储中 CSV 和 JSON 格式的新记录和使用它。

  2. 你可能想要使用 binlog 在 MySQL 这将有助于你去做 (按照链接读取 MySQL 备份方法

倾销的选择性记录︰

$recset = mysql_query("select column from database.table where= column > 1234");
for($recset as $row){
    file_put_contents("filename.json", json_encode($row) . "\n")
}

现在,一旦难以言表你可能读取此文件逐行和使用 json_enocode 来让你回到了 php 的数组对象的数据和做如你所愿与它。

[编辑︰ 后看你 pastebin 代码]

后固定几个变量的名称和代码,以工作作为您的需要。

$docsql='nts.sql';
require("cnxn.php");
error_reporting(E_ALL);
ini_set('display_errors', '1');
$q1=mysqli_query($cnx,"SELECT * FROM table WHERE col > '45678' ORDER BY col ASC");
$data_records=array();
while($r1=mysqli_fetch_assoc($q1)){
    $cntn=htmlentities($r1['cntn']);
    array_push($data_records, "(".$r1['col1'].",'".$r1['col2']."','".$r1['col3']."','".$r1['col4']."','".$r1['col5']."')");
}

$insert="INSERT INTO notas (col1, col2, col3, col4, col5) VALUES ";
file_put_contents($docsql, $insert);
foreach($data_records as $record){
    file_put_contents($docsql, $record) . "\n", FILE_APPEND);
}
官方微信
官方QQ群
31647020