`
wind9984
  • 浏览: 48118 次
  • 性别: 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数据库的自动化备份。 **一、备份需求** 数据库备份的主要目的是防止数据丢失...

    postgresql数据库备份和恢复

    完全备份涉及整个数据库的数据和结构,而部分备份则可以是数据库中选定的表或模式。pg_dump备份操作的语法如下: ``` pg_dump -h &lt;host&gt; -U &lt;username&gt; &lt;databasename&gt; &gt; ``` 在这里,`-h` 参数用来指定数据库...

    备份PostgreSQL和MySQL数据库

    这两种数据库管理系统(DBMS)都提供了内置的工具来方便地进行数据备份,使得用户可以在需要时恢复数据或在不同环境中迁移。 MySQL数据库的备份主要依赖于`mysqldump`工具。`mysqldump`是一个实用程序,能够从一个...

    postgres数据库用户手册

    这份“postgres数据库用户手册”提供了一套详尽的指南,涵盖了从初学者到高级开发人员所需的关于Postgres的所有关键概念、语法和实践。 一、Postgres数据库基础 Postgres的核心特性包括ACID(原子性、一致性、隔离...

    postgres数据库中文手册

    《postgres数据库中文手册》是为数据库管理员、开发者和学习者提供的宝贵资源,它详细阐述了PostgreSQL数据库系统的基础知识、语言特性和编程规范。PostgreSQL,通常简称为postgres,是一种功能强大的开源关系型...

    postgres数据库维护方法和恢复.docx

    二、PostgreSQL 数据库恢复 1. 数据备份:定期备份数据库是恢复策略的基础。可以使用 PostgreSQL 提供的 `pg_dump` 工具创建全量备份,或者使用 `pg_dumpall` 获取整个集群的备份。 ```bash pg_dump -U postgres...

    postgresql数据库定时备份脚本(linux)

    1. **完整备份**:包含所有数据库对象,如表、索引、视图等。 2. **增量备份**:基于上一次完整备份,仅备份自上次备份以来更改的数据。 3. **差异备份**:与增量备份类似,但基于上一次完整备份,备份所有变化的...

    linux 下 postgresql 的安装 备份

    恢复数据库可以使用 `psql` 命令来恢复备份文件。恢复命令的格式如下: ``` psql 数据名 ``` 其中,`数据名` 是要恢复的数据库名称,`outfile` 是备份文件的名称。 Linux 下 PostgreSQL 的安装和备份是一个复杂...

    linux-一个小100lineshell脚本用来管理Postgres数据库

    在这个场景中,我们有一个专门用于管理Postgres数据库的小型shell脚本,它大约包含100行代码。Postgres,全名PostgreSQL,是一款开源的关系型数据库管理系统(RDBMS),它以其稳定性、安全性以及强大的功能而闻名。 ...

    备份和恢复PostgreSQL数据库

    PostgreSQL数据库的备份和恢复是一项非常重要的数据库管理任务。备份可以防止由于操作失误、硬件故障、系统崩溃或其他意外情况导致的数据丢失。在PostgreSQL中,系统提供了专门的备份工具pg_dump和pg_dumpall来进行...

    如何恢复PostgreSQL数据库

    PostgreSQL 数据库恢复方法 PostgreSQL 是一个功能强大且广泛使用的开源关系数据库管理系统,但是在实际应用中,数据库崩溃或无法启动的情况时有发生。这时,如何恢复 PostgreSQL 数据库变得非常重要。下面将详细...

    postgres分布式数据库学习资料

    - **备份与恢复**:了解备份策略,如物理备份、逻辑备份等,以及如何快速恢复数据。 - **监控与调优**:通过性能监控工具,识别并解决性能瓶颈,持续优化数据库性能。 6. **课程资源** - **在线教程**:参考官方...

    数据库自动备份脚本

    数据库自动备份是IT运维中的重要环节,它能确保在数据丢失或系统故障时,能够迅速恢复到正常状态,减少业务中断带来的损失。本教程将详细讲解如何创建一个数据库自动备份脚本,以“数据库自动备份.bat”为例。 一、...

    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. ...

    postgres 常用操作笔记

    还原是指将备份文件恢复到数据库中,恢复数据库到之前的状态。Postgres 提供了多种还原方式,包括使用 `pg_restore` 命令和 SQL 语句。 4-e 参数表明遇到错误,停止执行,无需在其后添加参数。 --filename 复原的...

    BootcampX:Postgres数据库

    8. **备份与恢复**:学习如何备份Postgres数据库,包括物理备份和逻辑备份,以及如何在数据丢失或故障时恢复数据。 9. **安全性与权限管理**:了解用户、角色和权限的概念,如何创建和管理用户,以及如何控制对...

    PostgreSQL数据库备份工具

    通过设置定期自动备份,用户可以在任何时间点都有最近的数据库快照,以便在灾难恢复时快速恢复服务。定时备份的实现方式可能包括任务计划程序或集成在备份工具内的调度器,可以根据设定的时间间隔(如每天、每周或每...

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

    使用Docker可以简化数据库的备份和恢复流程,无论是PostgreSQL还是MySQL,都可以通过Docker命令快速实现备份和恢复操作。以下将详细介绍在Docker环境下如何备份PostgreSQL和MySQL数据库,并提供示例代码。 首先,...

Global site tag (gtag.js) - Google Analytics