`
wind9984
  • 浏览: 46769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

postgres数据库的单表恢复备份

    博客分类:
  • Perl
阅读更多

最近写的一个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#
 

 

 

0
0
分享到:
评论

相关推荐

    postgresql数据库备份和恢复

    postgresql数据库备份和恢复文档资料,详细介绍了PostgreSQL数据库的备份与恢复 方法,值得学习下

    PostgresSQL备份操作

    数据库备份相关的。 

    备份和恢复PostgreSQL数据库

    备份和恢复PostgreSQL数据库 讲解PostgreSQL数据库数据的备份和恢复的步骤

    docker中psql数据库备份与恢复详解

    1. Docker 中 Postgres数据库备份 命令: docker exec it db_13 pg_dumpall -c -U mrp &gt; mrp217 解释: docker exec it [docker中镜像数据库名称] pg_dumpall -c -U [用户名称] &gt; [导处的数据库名称] 2. ...

    pg-db-backup:备份和还原Postgres数据库Dockerfile

    PG数据库备份和还原脚本 Dockerfile +脚本可从Google云存储桶中进行备份和还原 服务帐号位置 服务帐户json文件应该可以在/service-account/account.json中访问 所需的环境变量 DATABASE_HOST DATABASE_USERNAME ...

    docker环境下数据库的备份(postgresql, mysql) 实例代码

    docker exec pg-db pg_dumpall -U postgres &gt; ${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 ...

    网站访问记录器 0.1.1 发布_数据库

    2.将visit_logger_20091101.zip文件解压,此文件为数据库的备份文件可以将其恢复。 恢复的方法为:在PostgreSQL中新建一个数据库,如,visit_logger,后运行如下的命令: pg_restore.exe -h localhost -p 5432 -U...

    postgres-operator:Kubernetes的生产PostgreSQL,从高可用性Postgres集群到全面的数据库即服务

    松散数据PostgreSQL运算符 在Kubernetes上运行自己的... 失败的主数据库会自动恢复,从而缩短恢复时间。 支持在内或跨工作的 。 备份和还原利用开源实用程序,并。 设置要保留备份的时间。 非常适合大型数据库! TLS

    2020 PG亚洲大会PPT汇总.zip

    11、HGDB数据库备份和恢复 12、Implementation of Global Temp Table 13、PG 可以用来干什么? 14、PG数据库生态选型思路与最佳实践 15、PostgreSQL CDC最佳实践 16、PostgreSQL VACUUM 运行机制探究 17、PostgreSQL...

    eclipse-postgresql

    ###连接到 Postgres 数据库### 例如,我的计算机上安装了 Postgres DB:=&gt; 将在 localhost 上创建一个默认端口为 5432 的数据库我从我的备份文件中恢复了数据库名称 detektordaten_hessen =&gt; 将有架构 public + ...

    Linux环境数据库管理员指南

    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用户手册.rar

    pg_probackup官方英文文档+中文翻译,pg_probackup管理PostgreSQL数据库集群的备份和恢复.pg_probackup是一个实用程序,用于管理PostgreSQL数据库集群的备份和恢复。它旨在执行PostgreSQL实例的定期备份,使您能够在...

    kobo-docker:Docker容器堆栈到KoBoToolbox的所有服务器端组件(kpi,kobocat,enketo-express)

    恢复备份 维护 介绍 kobo- 用于在您选择的机器上运行调查数据收集平台的副本。 它依靠将KoBo的不同部分分离到不同的容器(可以认为是轻量级的虚拟机)中,而用于配置,运行和连接这些容器。 现在需要两个PostgreSQL...

    网站访问记录器 0.1.1 发布_程序

    2.将visit_logger_20091101.zip文件解压,此文件为数据库的备份文件可以将其恢复。 恢复的方法为:在PostgreSQL中新建一个数据库,如,visit_logger,后运行如下的命令: pg_restore.exe -h localhost -p 5432 -U...

    docker-wal-e-replica:使用 WAL-E 创建数据库的 docker 副本

    这个 docker 镜像结合了 WAL-E 和 Postgres 9.3 来创建一个能够从 WAL-E 备份中恢复的 Docker 镜像。 这可以用于几件事: 开发人员可以使用它从备份创建本地副本 它可用于测试备份的完整性 它可用于为大批量作业...

    dump_fdw:Postgres 转储文件的外部数据包装器

    Postgres 转储外部数据包装器 此扩展为 PostgreSQL 实现了一个外部数据包装器,能够直接从 PostgreSQL 自定义转储格式的文件中查询数据。 这可用于恢复特定于行的数据。 笔记。 这仅在 PostgreSQL 9.1/9.2/9.3/9.4 ...

    Core:核心架构

    恢复数据库一个很好的方法是从备份中加载DTPW数据集。 在可以找到一个备份,但是到您阅读本文时,显然已经有些过时了。 恢复: 创建一个空数据库(与您的配置文件中的名称匹配) 安装扩展-作为快捷方式看看恢复...

    beginning database with postgresql from novice to professional

    本书是学习postgres从新手到专家的第二版,从最基本的RDBMS数据库系统,sql语音,数据库的连接使用,参数介绍,备份恢复,主从配置等介绍了数据库的使用。不过版本稍微有点老了,pg9.x,但是技术不过时,感兴趣的话...

    ansible-role-healthchecks:适用于Ansible的Dockerized healthchecks.io角色

    (可选)每小时备份一次borg存储库,并选择在安装后恢复最新的备份。要求Ubuntu主机borg备份存储库(可选) Docker和Docker Compose(及其pip模块docker , docker-py , docker-compose )角色变量名称默认值可能...

Global site tag (gtag.js) - Google Analytics