PostgreSQL逻辑备份恢复--pg_dump导出及psql导入实例
2019-03-17 00:00
489 查看
数据库导入导出是最常用的功能之一。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)保证没有业务连接数据库时才导入,或向一个干净的数据库进行导入
相关文章推荐
- PostgreSQL pg_dump&psql 数据的备份与恢复
- PostgreSQL pg_dump&psql 数据的备份与恢复
- PostgreSQL pg_dump&psql 数据的备份与恢复
- pg_dump导出psql导入举例
- postgresql使用pg_dump备份与恢复
- Oracle备份与恢复系列 五 逻辑导入导出
- MongoDB 导出导入备份恢复数据实例
- MongoDB 导出导入备份恢复数据详解及实例
- PG数据库之间的导入导出(pg_dumpall,pg_dump,psql,pg_restore)
- MongoDB 导出导入备份恢复数据详解及实例
- postgresql使用pg_dump、pg_restore备份及恢复数据库
- pg_dump实例详解(备份postgresql和greenplum数据库)
- PostgreSQL之pgdump备份恢复
- postgresql 数据库的备份和恢复 (pg_dump 和 pg_restore)
- postgresql备份恢复之pg_dump大数据处理
- pg_restore - 从一个由 pg_dump 创建的备份文件中恢复 PostgreSQL 数据库。
- PostgreSQL pg_dump&pg_restore 数据的导出和导入
- MongoDB 导出导入备份恢复数据实例
- Oracle数据库的逻辑备份导入和导出
- Oracle 数据库备份与恢复总结-exp/imp (导出与导入装库与卸库)