设为首页 加入收藏

TOP

PostgreSQL逻辑备份恢复--pg_dump导出及psql导入实例
2019-03-19 14:09:24 】 浏览:100
Tags: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)保证没有业务连接数据库时才导入,或向一个干净的数据库进行导入


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇PostgreSQL用户密码如何通过md5加.. 下一篇InnoDB的锁机制深入理解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目