PostgreSQL逻辑备份恢复--pg_dump导出及psql导入案例

数据库导入导出是最常用的功能之一。PostgreSQL的备份工具可以使用pg_dump及pg_dumpall。可以通过pg_dump --help获取其使用方法。这里不对其做过多介绍。主要介绍在使用pg_dump及恢复过程中遇到的一个问题。

1、问题
使用pg_dump -c导出后,通过psql导入时报下面的错误:

ERROR:  relation "t1" already exists
ERROR:  duplicate key value violates unique constraint "t1_pkey"
ERROR:  multiple primary keys for table "t1" are not allowed

2、导入导出的操作

pg_dump -U postgres -d yzs -Fa -c -C -f all.sql
psql < all.sql

3、问题分析
1)通过-c导出时在重建database前先drop
2)通过-C导出时导出时导出create database语句
3)每次导入时,虽然库中已有导入的表结构和部分数据,及先执行drop database语句清空,应该不会出现表已存在等错误,但是这种错误确实出现了。原来,在导入时,只要已有连接连着这个database,drop语句就不会执行成功,导致清理数据库失败,后续执行对应语句时会报已存在、重复键、多个主键等错误。
4、解决方法
1)pg_dump导出时,没有选项使导出的语句中带if not exists,不能使之不存在时再创建或插入。
2)保证没有业务连接数据库时才导入,或向一个干净的数据库进行导入

原文地址:https://blog.51cto.com/yanzongshuai/2364329

时间: 2024-08-29 18:24:55

PostgreSQL逻辑备份恢复--pg_dump导出及psql导入案例的相关文章

某电商项目PostgreSQL数据库备份恢复方案

某电商项目PostgreSQL数据库备份恢复方案: 下载地址:某电商项目PostgreSQL数据库备份恢复方案

PostgreSQL逻辑备份pg_dump使用及其原理解析

一.原理分析 1.循环调用getopt_long解析命令行参数,将参数保存到static DumpOptions dopt;中2.判断参数是否相容,不相容则退出: options -s/--schema-only and -a/--data-only cannot be used together options -c/--clean and -a/--data-only cannot be used together options --inserts/--column-inserts and

python | MongoDB备份恢复与导出导入

说明:本文所有操作均在win7下的MongoDB3.4.4版本中进行. 一.备份与恢复 1. 备份: mongodump -h IP --port 端口 -u 用户名 -p 密码 -d数据库 -o 文件路径 (将使用某个用户账号将某个mongodb服务器上的某个数据库备份到某个路径下) 如果无需指定用户,可以去掉-u和-p:如果导出本机的数据库,可以去掉-h:如果是默认端口,可以去掉--port: 如果想导出所有数据库,可以去掉-d.如果只想备份某个集合,应在”-d 数据库”后添加”-c 集合名

MongoDB备份恢复与导出导入

说明:本文所有操作均在win7下的MongoDB3.4.4版本中进行. 一.备份与恢复 1. 备份: mongodump -h IP --port 端口 -u 用户名 -p 密码 -d数据库 -o 文件路径 (将使用某个用户账号将某个mongodb服务器上的某个数据库备份到某个路径下) 如果无需指定用户,可以去掉-u和-p:如果导出本机的数据库,可以去掉-h:如果是默认端口,可以去掉--port: 如果想导出所有数据库,可以去掉-d.如果只想备份某个集合,应在"-d 数据库"后添加&q

Oracle数据库备份恢复高级培训视频课程(案例、实战、深入、全面)

套餐介绍: 介绍:风哥Oracle数据库备份恢复培训(案例.实战.深入.全面),DBA初级到骨灰级的脱变. 内容:风哥Oracle数据库备份恢复及存储容灾基础,控制文件与参数文件详解,存储结构深入分析,Oracle底层技术,数据块解析,BBED深入解析,重做日志Redo深入解析,Undo回滚段深入解析,用户管理模式的备份恢复,RMAN备份恢复,Flashback闪回恢复管理,LogMiner日志挖掘技术,SQL_Loader,Oracle逻辑备份恢复迁移之exp/imp和expdp/impdp.

Oracle逻辑备份恢复之exp/imp_超越OCP精通Oracle视频课程培训22

oracle视频教程目标  Oracle视频教程,风哥本套oracle教程培训学习oracle数据库export与import逻辑备份恢复参数详解及常用语法,配置生产环境的逻辑自动备份策略,exp/imp生产环境数据迁移流程和注意事项,exp/imp数据迁移案例,exp/imp迁移过程字符集的处理,exp/imp优化的方法,exp/imp 常见问题及解决方法.适用人群IT相关从业人员.Oracle数据库技术人员.想加工资的.想升职的都可以.  视频在线学习地址:http://edu.51cto.

全备份恢复mysqlbump和mraiabackup

逻辑备份恢复数据量较小 一个库第一步备份 mysqldump -uroot -p123 --databases xiao > /root/xiao.sql第二步恢复MariaDB [xiao]> source xiao.sql 所有库mysqldump -uroot -p123 -x --all-databases > all.sql 一个表多个# mysqldump -uroot -p123 zxw students > students.sql备份工具mariabackupmy

postgresql备份恢复数据库和批量导入导出数据到文件方法

备份数据库:pg_dump -h localhost -U root demo02 > /home/arno/dumps/demo02.bak 恢复数据库:psql -h localhost -U root -d demo <  demo.bak 备份表:pg_dump -h localhost -U root demo02 -t books > /home/arno/dumps/books.bak 恢复表:psql -h localhost -U root -d demo -t boo

postgresql数据库备份和恢复(超快)

PostgreSQL自带一个客户端pgAdmin,里面有个备份,恢复选项,也能对数据库进行备份 恢复(还原),但最近发现数据库慢慢庞大的时候,经常出错,备份的文件过程中出错的几率那是相当大,手动调节灰常有限.所以一直寻找完美的备份恢复方案. 梦里寻他千百度,伊人却在灯火阑珊处...其实PostgreSQL内置不少的工具,寻找的备份恢复方案就在其中:pg_dump,psql.这两个指令 在数据库的安装目录下,比如我自己本地安装的,路径形如:C:\Program Files\PostgreSQL\9