最近写的一个postgres数据库的单表恢复备份perl脚本
记录下来方便以后使用
Script name : sqlExec4PG.pl
#!/usr/bin/perl
use strict;
use Carp;
use IPC::Open2;
use IPC::Open3;
$|=1;
my $dbname = $ARGV[0];
my $user = $ARGV[1];
my $table = $ARGV[2];
my $mode = $ARGV[3];
my $PGSQL = "";
if ($dbname eq "" || $user eq "" ) {
croak ("DB name and user not specified.");
}
my $PSQL = `ps ax | grep postmaster | awk '{print \$5}' | sed 's#postmaster#psql#g' | egrep -v 'grep|sed|sh'`;
if($PSQL =~ /^\/.*\/psql$/){
$PSQL =~ s/^\s+//;
$PSQL =~ s/\s+$//;
$PGSQL = $PSQL ." -U ". $user;
print $PGSQL."\n";
}else{
croak("Error : Can not find the command in the system process");
exit 1;
}
my $TAB = " ";
my $rc = "0";
if( $mode eq "" )
{
if($table eq "")
{
croak("table name not specified.");
$rc = 1;
}
else
{
open(CMD, "| $PGSQL -q -d $dbname") or croak ("can't open psql command");
print CMD "set client_encoding TO SJIS;\n";
print CMD "copy $table from stdin;\n";
while (<STDIN>) {
print CMD $_;
}
close(CMD) or croak ("error while sql exec. Error msg=$!");
$rc = $?;
}
}
elsif ( $mode eq "dump" )
{
open(CMD, "| $PGSQL -q -A -F '$TAB' -t -d $dbname") or croak ("can't open psql command. Error msg=$!");
print CMD "set client_encoding TO SJIS;\n";
while (<STDIN>) {
#$_ =~ s/%%FUNC_CAST_INT%%/int4/g;
print CMD $_;cat #DATAFILE# | ./sqlExec.pl #DB NAME# #USER# #TBLNAME#
}
close(CMD) or croak ("error while sql exec. Error msg=$!");
$rc = $?;
}
else{
croak ("use error");
$rc = 1;
}
exit($rc);
useage :
if you load data to postgres database. use command below
cat #DATAFILE# | ./sqlExec4PG.pl #DBNAME# #USER# #TBLNAME#
if you will download tables data and write to file. use command below
echo "SQL" | ./sqlExec4PG.pl #DBNAME# #USER# "" dump > #DATAFILE#
分享到:
相关推荐
postgresql数据库备份和恢复文档资料,详细介绍了PostgreSQL数据库的备份与恢复 方法,值得学习下
数据库备份相关的。
备份和恢复PostgreSQL数据库 讲解PostgreSQL数据库数据的备份和恢复的步骤
1. Docker 中 Postgres数据库备份 命令: docker exec it db_13 pg_dumpall -c -U mrp > mrp217 解释: docker exec it [docker中镜像数据库名称] pg_dumpall -c -U [用户名称] > [导处的数据库名称] 2. ...
PG数据库备份和还原脚本 Dockerfile +脚本可从Google云存储桶中进行备份和还原 服务帐号位置 服务帐户json文件应该可以在/service-account/account.json中访问 所需的环境变量 DATABASE_HOST DATABASE_USERNAME ...
docker exec pg-db pg_dumpall -U postgres > ${BACK_DATA} # pg-db 是数据库的 docker 名称 2.恢复 docker cp ${BACK_DATA} pg-db:/tmp docker exec pg-db psql -U postgres -f /tmp/${BACK_DATA} postgres mysql ...
2.将visit_logger_20091101.zip文件解压,此文件为数据库的备份文件可以将其恢复。 恢复的方法为:在PostgreSQL中新建一个数据库,如,visit_logger,后运行如下的命令: pg_restore.exe -h localhost -p 5432 -U...
松散数据PostgreSQL运算符 在Kubernetes上运行自己的... 失败的主数据库会自动恢复,从而缩短恢复时间。 支持在内或跨工作的 。 备份和还原利用开源实用程序,并。 设置要保留备份的时间。 非常适合大型数据库! TLS
11、HGDB数据库备份和恢复 12、Implementation of Global Temp Table 13、PG 可以用来干什么? 14、PG数据库生态选型思路与最佳实践 15、PostgreSQL CDC最佳实践 16、PostgreSQL VACUUM 运行机制探究 17、PostgreSQL...
###连接到 Postgres 数据库### 例如,我的计算机上安装了 Postgres DB:=> 将在 localhost 上创建一个默认端口为 5432 的数据库我从我的备份文件中恢复了数据库名称 detektordaten_hessen => 将有架构 public + ...
9.26.4 备份和恢复 279 9.26.5 大型数据库 280 9.27 使用 PostgreSQL 的 KVM 开关 280 9.28 故障排除—postmaster 启动故障 281 9.28.1 客户机连接问题 282 9.28.2 调试消息 282 9.28.3 pg_options 283 9.29 技术...
pg_probackup官方英文文档+中文翻译,pg_probackup管理PostgreSQL数据库集群的备份和恢复.pg_probackup是一个实用程序,用于管理PostgreSQL数据库集群的备份和恢复。它旨在执行PostgreSQL实例的定期备份,使您能够在...
恢复备份 维护 介绍 kobo- 用于在您选择的机器上运行调查数据收集平台的副本。 它依靠将KoBo的不同部分分离到不同的容器(可以认为是轻量级的虚拟机)中,而用于配置,运行和连接这些容器。 现在需要两个PostgreSQL...
2.将visit_logger_20091101.zip文件解压,此文件为数据库的备份文件可以将其恢复。 恢复的方法为:在PostgreSQL中新建一个数据库,如,visit_logger,后运行如下的命令: pg_restore.exe -h localhost -p 5432 -U...
这个 docker 镜像结合了 WAL-E 和 Postgres 9.3 来创建一个能够从 WAL-E 备份中恢复的 Docker 镜像。 这可以用于几件事: 开发人员可以使用它从备份创建本地副本 它可用于测试备份的完整性 它可用于为大批量作业...
Postgres 转储外部数据包装器 此扩展为 PostgreSQL 实现了一个外部数据包装器,能够直接从 PostgreSQL 自定义转储格式的文件中查询数据。 这可用于恢复特定于行的数据。 笔记。 这仅在 PostgreSQL 9.1/9.2/9.3/9.4 ...
恢复数据库一个很好的方法是从备份中加载DTPW数据集。 在可以找到一个备份,但是到您阅读本文时,显然已经有些过时了。 恢复: 创建一个空数据库(与您的配置文件中的名称匹配) 安装扩展-作为快捷方式看看恢复...
本书是学习postgres从新手到专家的第二版,从最基本的RDBMS数据库系统,sql语音,数据库的连接使用,参数介绍,备份恢复,主从配置等介绍了数据库的使用。不过版本稍微有点老了,pg9.x,但是技术不过时,感兴趣的话...
(可选)每小时备份一次borg存储库,并选择在安装后恢复最新的备份。要求Ubuntu主机borg备份存储库(可选) Docker和Docker Compose(及其pip模块docker , docker-py , docker-compose )角色变量名称默认值可能...