Postgresql使用經常使用技巧

自從Mysql被收購後就商業化了,找來找去Postgresql就被拿來替代了。做爲開源和學究氣息很是濃的數據庫軟件,更新很快,特別是版本9以後,不過在中文技術維護方面的資料仍是有點難找,如下命令都在10.6版本下測試。mysql

1 操做備份與恢復
操做表以前備份表是一個好習慣:linux

CREATE TABLE 目標表_時間戳_操做緣由 AS SELECT * FROM 備份表

恢復數據sql

Truncate TABLE tablename;  
INSERT INTO 目標表 SELECT * FROM 備份表;

導入指定字段shell

INSERT INTO 目標表 (字段1, 字段2, …) SELECT 字段1, 字段2, …FROM 備份表;

2.psql語句返回值意義
若是psql正常完成,它會向 shell 返回 0。若是它自身發生一個致命錯誤(例如內存用完、找不到文件),它會返回 1。若是到服務器的鏈接出問題而且事務不是交互式的,它會返回2。若是在腳本中發生錯誤,它會返回 3 而且變量ON_ERROR_STOP會被設置。 數據庫

3.不讓psql輸出的文字自動換行
有時候自動換行會讓信息看不清楚,這時候修改下輸出信息格式,pset參數設置和當前使用PG版本有關。windows

\pset pager off
或者
\pset columns 10000

pset [ option [ value ] ]
border 0(沒有邊框)、1(內部分隔線)和 2(表格邊框)有columns 爲wrapped格式設置目標寬度。要不換行,這裏服務器

4.使用函數導入csv等文件必須確保文件格式匹配,儘量轉換爲UTF8,不然沒法導入返回未知錯誤信息。通常從windows保存的文件換行等都有特殊的格式沒法直接導入。 app

5.PG沒有mysql的merge覆蓋插入的功能。只有相似的upsert,當你插入數據碰到已經存在相關條目時,能夠選擇相關操做,Do nothing 或者 相關操做。函數

INSERT INTO table_name(column_list) VALUES  
ON CONFLICT target action;

e.g  
INSERTINTOcustomers (name, email)  
VALUES  
(  
‘Microsoft’,  
‘hotline@microsoft.com’  
)  
ON CONFLICT(name)  
DO  
UPDATE  
SET email =EXCLUDED.email || ‘;’ || customers.email;

6.比較兩表數據區別
在foo表裏但不在bar裏面測試

SELECT  ID,  NAME,  ‘not in bar’ AS note  FROM  foo  EXCEPT  
SELECT  ID,  NAME,  ‘not in bar’ AS note FROM  bar

或者文件比較少的時候,能夠導出成文件,而後使用linux命令grep -v -f bar.table foo.table

7.拷貝數據到文件,可使用內置的copy命令:

COPY persons TO ‘/tmp/persons.csv’WITHDELIMITER‘,’NULLAS ‘’ ;

也能夠選擇幾列,例子:

COPY persons (first\_name,last\_name,email) TO ’C:\\tmp\\persons\_partial\_db.csv’ DELIMITER ‘,’ CSVHEADER;

也能夠條件選擇相關數據copy selected data to csv,能夠用內部copy命令,例子:

\copy (SELECT * FROM persons) to ‘C:\\tmp\\persons\_client.csv’ with csv

8.pg輸出列太長的會自動換行,能夠用x命令,豎直顯示數據條目。

9.結束pg裏的卡住的進程,可以使用pg_stat_activity字段。
select pg_terminate_backend(pid)只能殺單個進程,當要殺多個時候,能夠用下列命令。

select pg_terminate_backend(pid) from pg_stat_activity where state <> 'idle' and now() - pg_stat_activity.query_start > interval '15 minutes' and datname='數據庫名';

pg8版本可以使用select pg_cancel_backend(pid);

喜歡務必點個👍

相關文章
相關標籤/搜索