我使用pg_dump的当前备份整个数据库的一部分:PHP备份整个PostgreSQL数据库,然后恢复表
<?php
include_once("../db.php");
$password = getPGPassword();
$user = getPGUser();
$db = getPGDb();
putenv("PGPASSWORD=" . $password);
$dumpcmd = array("pg_dump", "-i", "-U", escapeshellarg($user), "-F", "c", "-b", "-v", "-f", escapeshellarg('/var/www/backups/backup-'.time().'.sql'), escapeshellarg($db));
exec(join(' ', $dumpcmd), $cmdout, $cmdresult);
putenv("PGPASSWORD");
?>
我知道我可以使用PSQL恢复整个数据库,但有什么办法我可以选择性地使用查询恢复表的一部分?我能想到的最简单的事情是用psql创建一个临时数据库,从所需的表中读取行,根据主要序列键删除冲突的行,然后插入表中。
有没有更好的方法来做到这一点?我需要完整的SQL查询功能。
为什么要将PHP带入图片? – e4c5
我有一个用户界面和一个管理界面。从用户界面可以更改数据库。从管理界面我希望能够使用PHP脚本恢复一行,因此不必手动/从命令行完成。 – maxhud
在这种情况下,如果您以'纯文本'格式创建转储文件,则PHP脚本应能够遍历文件,直到找到感兴趣的主键并仅插入该行。 – e4c5