postgres 指令集

用postgres帳號,連資料庫
su – postgres

psql dbname

或者
psql dbname -U postgres

建立資料庫
createdb dbname

刪除資料庫
dropdb dbname

備份
pg_dump dbname > pgdump_dbname.sql

還原
cat pgdump_dbname.sql | psql dbname


psql dbname < pgdump_dbname.sql

建立一個以template0為模型的相同資料庫
createdb -T template0 dbname

備份輸出全部資料庫
pg_dumpall > pgdumpall.sql

還原
psql template1 < pgdumpall.sql


psql -e template1 < pgdumpall.sql ???這指令是個問號

重置tables的sequence其last_value值
ALTER SEQUENCE alemail_index_seq START 1 CYCLE

其它
pg_dumpall -p 5432 | psql -d template1 -p 6543

重新安裝、移轉postgresql流程
pg_dumpall > pgdumpall.sql
pg_ctl stop
mv /var/lib/pgsql /var/lib/pgsql.org
cd postgresql-new/
gmake install
initdb -D /var/lib/pgsql/data
postmaster -D /var/lib/pgsql/data



pg_ctl -D /var/lib/pgsql/data -l /var/log/postgresql.log start

su – postgres
psql template1 < pgdumpall.sql

在pgsql環境下複製tables的資料到系統下的實際路徑,data.txt裡為資料模式
pgsql> c db_name
pgsql> COPY table_name TO '/tmp/data.txt'

從table1_name選擇的資料,複製到table2_name
SELECT * INTO table2_name from table1_name WHERE 條件

建立使用者
CREATE USER cross WITH ENCRYPTED PASSWORD '123456'


CREATE USER cross WITH UNENCRYPTED PASSWORD '123456'

CREATE USER cross WITH PASSWORD '123456' CREATEDB,CREATEUSER

CREATE USER cross WITH PASSWORD '123456' NOCREATEDB,NOCREATEUSER

修改使用者
ALTER USER cross WITH PASSWORD '123456'
 
改名
ALTER USER cross RENAME TO cross2
 
子查詢

回傳單一個
SELECT * FROM table_name WHERE volumns_name = ( SELECT id FROM table_name WHERE '條件');
 
回傳多個
SELECT * FROM table_name WHERE volumns_name IN ( SELECT id FROM table_name WHERE '條件');
 
新增欄位

ALTER TABLE table_pop3 ADD COLUMN mailfrom character varying(1024);
ALTER TABLE table_pop3 ADD COLUMN rcptto character varying(1024);
ALTER TABLE table_imap ADD COLUMN mailfrom character varying(1024);
ALTER TABLE table_imap ADD COLUMN rcptto character varying(1024);

修改欄位名稱

ALTER TABLE table_xxx RENAME COLUMN s_xxx TO d_xxx;

時間函數

select now();

select current_date;

select current_date + 1 ;

select current_date – 1 ;

修改欄位中的資料

UPDATE table_name SET column_name = '新的值' WHERE column_name = '舊的值';

從data塞50000筆資料到data1

第一筆到第50000筆
insert into data1 select from data limit 50000;

從data的第50001塞50000筆資料到data1,就是從第50001筆 -> 第100000筆
insert into data1 select from data offset 50000 limit 50000;

留言

這個網誌中的熱門文章

c語言-關於#define用法

CMD常用網管指令

使用windows CMD 時間自動校正