第三方工具匯入匯出PG可能出現的問題

2021-04-24 15:10:49 字數 893 閱讀 8441

對於postgresql,匯出、匯入一般用自帶的pg_dump和pg_restore或psql. 若要第三方非特製的工具匯出,再匯入,或者手工寫sql,除了注意觸發器和約束等其他資料庫必須注意的通常問題外,還要考慮pg中serial問題:

在pg中,插入乙個帶有serial欄位的表,若不指明serial字段值,serial會自動增加乙個值,這和其他資料庫是一樣的。

比如一張表,

create table test (

t_int  serial primary key,

t_c    char(2));

假設serial當前值為2,

當插入乙個不指明serial的語句 insert into test (t_c) values ('aaa');

t_int自動增加為3。

然而當你插入乙個帶有serial字段值的sql語句的時候,serial值不會自動改變。(其他資料庫如mysql,會自動變為max(當前serial值,插入的serial值)。

比如:insert into test (t_int,t_c) values (4,'aaaa'); serial當前值並不會這條語句的插入而改變,還停留在上個當前值3。

當你插入下一條語句insert into test (t_c) values ('bbb');出現duplicate key錯誤,因為此時serial有3增加為4,與上一條語句出現主鍵約束衝突。

select pg_catalog.setval('***x_seq', ***x, false); 

或者select  pg_catalog.setval('***x_seq', (select ***_id from *** order by ***_id desc limit 1), false); 

否則恢復的時候,資料是不完整的。

匯入第三方細節

最近匯入第三方的東西比較多 fmdb 第三方連線sqlite資料庫的用的,匯入的框架 libsqlite3.0tbd ios9.2 版本不同,字尾不同,fmdb不支援arc記得 選中專案 build phases 選中第二項,尋找相關的檔案在後面跟上 fno objc arc欄位 masnory 第...

Andorid Studio匯入第三方aar包

兩者都是第三方庫或資源的表現形式,區別在於 jar檔案 class以及res下的所有的資源檔案全部包含 1 複製外部aar包到libs目錄下 2 修改build.gradle配置檔案 1.新增 respositories 這是 新增乙個人本地倉庫,並把libs目錄作為倉庫的位址。2.修改depend...

go匯入第三方包

最好的學習方式就是實踐。我們通過匯入gin包來深入學習。首先回想一下,我們安裝goland的時候,設定了幾個比較重要的環境變數,也就是goroot和gopath。goroot比較容易理解。也就是我們go語言的安裝目錄,標準庫什麼的就放在裡面的。在linux中的話,預設安裝到 usr lib go中,...