最近写的一个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数据库的自动化备份。 **一、备份需求** 数据库备份的主要目的是防止数据丢失...
完全备份涉及整个数据库的数据和结构,而部分备份则可以是数据库中选定的表或模式。pg_dump备份操作的语法如下: ``` pg_dump -h <host> -U <username> <databasename> > ``` 在这里,`-h` 参数用来指定数据库...
这两种数据库管理系统(DBMS)都提供了内置的工具来方便地进行数据备份,使得用户可以在需要时恢复数据或在不同环境中迁移。 MySQL数据库的备份主要依赖于`mysqldump`工具。`mysqldump`是一个实用程序,能够从一个...
这份“postgres数据库用户手册”提供了一套详尽的指南,涵盖了从初学者到高级开发人员所需的关于Postgres的所有关键概念、语法和实践。 一、Postgres数据库基础 Postgres的核心特性包括ACID(原子性、一致性、隔离...
《postgres数据库中文手册》是为数据库管理员、开发者和学习者提供的宝贵资源,它详细阐述了PostgreSQL数据库系统的基础知识、语言特性和编程规范。PostgreSQL,通常简称为postgres,是一种功能强大的开源关系型...
二、PostgreSQL 数据库恢复 1. 数据备份:定期备份数据库是恢复策略的基础。可以使用 PostgreSQL 提供的 `pg_dump` 工具创建全量备份,或者使用 `pg_dumpall` 获取整个集群的备份。 ```bash pg_dump -U postgres...
1. **完整备份**:包含所有数据库对象,如表、索引、视图等。 2. **增量备份**:基于上一次完整备份,仅备份自上次备份以来更改的数据。 3. **差异备份**:与增量备份类似,但基于上一次完整备份,备份所有变化的...
恢复数据库可以使用 `psql` 命令来恢复备份文件。恢复命令的格式如下: ``` psql 数据名 ``` 其中,`数据名` 是要恢复的数据库名称,`outfile` 是备份文件的名称。 Linux 下 PostgreSQL 的安装和备份是一个复杂...
在这个场景中,我们有一个专门用于管理Postgres数据库的小型shell脚本,它大约包含100行代码。Postgres,全名PostgreSQL,是一款开源的关系型数据库管理系统(RDBMS),它以其稳定性、安全性以及强大的功能而闻名。 ...
PostgreSQL数据库的备份和恢复是一项非常重要的数据库管理任务。备份可以防止由于操作失误、硬件故障、系统崩溃或其他意外情况导致的数据丢失。在PostgreSQL中,系统提供了专门的备份工具pg_dump和pg_dumpall来进行...
PostgreSQL 数据库恢复方法 PostgreSQL 是一个功能强大且广泛使用的开源关系数据库管理系统,但是在实际应用中,数据库崩溃或无法启动的情况时有发生。这时,如何恢复 PostgreSQL 数据库变得非常重要。下面将详细...
- **备份与恢复**:了解备份策略,如物理备份、逻辑备份等,以及如何快速恢复数据。 - **监控与调优**:通过性能监控工具,识别并解决性能瓶颈,持续优化数据库性能。 6. **课程资源** - **在线教程**:参考官方...
数据库自动备份是IT运维中的重要环节,它能确保在数据丢失或系统故障时,能够迅速恢复到正常状态,减少业务中断带来的损失。本教程将详细讲解如何创建一个数据库自动备份脚本,以“数据库自动备份.bat”为例。 一、...
1. Docker 中 Postgres数据库备份 命令: docker exec it db_13 pg_dumpall -c -U mrp > mrp217 解释: docker exec it [docker中镜像数据库名称] pg_dumpall -c -U [用户名称] > [导处的数据库名称] 2. ...
还原是指将备份文件恢复到数据库中,恢复数据库到之前的状态。Postgres 提供了多种还原方式,包括使用 `pg_restore` 命令和 SQL 语句。 4-e 参数表明遇到错误,停止执行,无需在其后添加参数。 --filename 复原的...
8. **备份与恢复**:学习如何备份Postgres数据库,包括物理备份和逻辑备份,以及如何在数据丢失或故障时恢复数据。 9. **安全性与权限管理**:了解用户、角色和权限的概念,如何创建和管理用户,以及如何控制对...
通过设置定期自动备份,用户可以在任何时间点都有最近的数据库快照,以便在灾难恢复时快速恢复服务。定时备份的实现方式可能包括任务计划程序或集成在备份工具内的调度器,可以根据设定的时间间隔(如每天、每周或每...
- **日常数据库维护工作**:如备份恢复、性能监控等。 - **备份与恢复**:提供了完整的备份和恢复策略。 - **高可用性与负载均衡**:支持主备复制、读写分离等高可用方案。 - **恢复配置**:涉及各种恢复场景下的...