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)保證沒有業務連線資料庫時才匯入,或向一個乾淨的資料庫進行匯入
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31493717/viewspace-2638604/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mongodb的備份恢復與匯出匯入MongoDB
- Docker容器中的備份、恢復、遷移、匯入、匯出Docker
- PostgreSQL邏輯備份pg_dump使用及其原理解析SQL
- Mysql備份與恢復(2)---邏輯備份MySql
- MySQL備份與恢復——基於MyDumper/MyLoader 邏輯備份恢復MySql
- MySQL備份與恢復——基於OUTFILE /LOAD DATA 邏輯備份恢復MySql
- pg_dump 備份,恢復資料庫資料庫
- mysqldump壓縮備份匯出匯入(含定期備份shell指令碼)MySql指令碼
- 達夢DM備份恢復(物理和邏輯)
- 【PG備份恢復】pg_dump命令測試
- Postgresql 備份與恢復SQL
- MYSQL資料匯出備份、匯入的幾種方式MySql
- Oracle邏輯備份與恢復選項說明Oracle
- postgresql從入門到精通教程 - 第36講:postgresql邏輯備份SQL
- ORACLE備份&恢復案例(轉)Oracle
- MySQL 8:備份&匯入【備忘】MySql
- PostGreSql12.6的備份恢復SQL
- Mysql匯出檔案及備份操作筆記MySql筆記
- sqoop部署及匯入與匯出OOP
- 批量備份還原匯入與匯出MongoDB資料方式昝璽MongoDB
- ORACLE備份&恢復案例三(轉)Oracle
- ORACLE備份&恢復案例二(轉)Oracle
- postgresql備份與恢復資料庫SQL資料庫
- mysql 開發進階篇系列 42 邏輯備份與恢復MySql
- 【RMAN】Oracle12c之後,rman備份Dataguard備端恢復可能出現邏輯錯誤Oracle
- 8. Oracle日常管理——8.2.DB日常管理——8.2.3. DB邏輯備份及恢復Oracle
- Linux mysql 備份和匯入命令LinuxMySql
- RMAN備份恢復典型案例——異機恢復未知DBID
- 非常簡單的匯出 CSV 表格邏輯
- 阿里面試官:知道 MySQL 邏輯備份與恢復測試麼?阿里面試MySql
- PostgreSql資料庫的備份和恢復SQL資料庫
- docker 中 MySQL 備份及恢復DockerMySql
- 【mysqldump】mysqldump及備份恢復示例MySql
- Activity 流程模型匯入匯出-activity流程模型匯入匯出模型
- RMAN備份恢復典型案例——RMAN備份&系統變慢
- Mysql匯入&匯出MySql
- doris匯入匯出
- esayExcel匯入匯出Excel