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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle備份與恢復系列 五 邏輯匯入匯出Oracle
- 使用exp/imp匯出匯入資料(邏輯備份恢復)
- Mongodb的備份恢復與匯出匯入MongoDB
- Docker容器中的備份、恢復、遷移、匯入、匯出Docker
- PostgreSQL邏輯備份pg_dump使用及其原理解析SQL
- Oracle資料庫備份與恢復之匯出/匯入(EXP/IMP)、熱備份和冷備份Oracle資料庫
- MySql邏輯備份恢復MySql
- WINDOWS下部署ORACLE邏輯匯出備份指令碼WindowsOracle指令碼
- Mysql備份與恢復(2)---邏輯備份MySql
- ORACLE備份和恢復 - 邏輯備份 exp/impOracle
- 【匯入匯出】sqlldr 匯入案例SQL
- Oracle expdp/impdp匯出匯入命令及資料庫備份Oracle資料庫
- MySQL備份與恢復——基於MyDumper/MyLoader 邏輯備份恢復MySql
- MySQL備份與恢復——基於OUTFILE /LOAD DATA 邏輯備份恢復MySql
- Postgresql 備份恢復SQL
- [Mysql]——備份、還原、表的匯入匯出MySql
- Oracle資料庫備份與恢復之exp/imp(匯出與匯入裝庫與卸庫)Oracle資料庫
- mysqldump壓縮備份匯出匯入(含定期備份shell指令碼)MySql指令碼
- 物化檢視 VS 匯出/匯入 邏輯資料遷移
- 邏輯匯入匯出和max-allowed-packet的關係
- 【PG備份恢復】pg_dump命令測試
- Oracle資料庫備份與恢復之一:exp/imp(匯出與匯入裝庫與卸庫)Oracle資料庫
- Oracle 資料庫備份與恢復總結-exp/imp (匯出與匯入裝庫與卸庫)Oracle資料庫
- postgresql 資料匯入和匯出SQL
- Postgresql 備份與恢復SQL
- MYSQL資料匯出備份、匯入的幾種方式MySql
- 用 PostgreSQL 的 COPY 匯入匯出 CSVSQL
- Oracle邏輯備份與恢復選項說明Oracle
- 資料庫(表)的邏輯備份與恢復資料庫
- ORACLE備份&恢復案例Oracle
- postgresql從入門到精通教程 - 第36講:postgresql邏輯備份SQL
- Oracle expdp/impdp匯入匯出備份資料庫指令碼Oracle資料庫指令碼
- Oracle備份恢復之熱備份恢復及異機恢復Oracle
- ORACLE備份&恢復案例(轉)Oracle
- ORACLE備份&恢復案例(3)Oracle
- ORACLE備份&恢復案例(5)Oracle
- ORACLE備份&恢復案例(4)Oracle
- ORACLE備份&恢復案例(7)Oracle