用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;

Related posts 相關文章
CloudFlare 使用 PostgreSQL + CitusDB 作大量數據分析
More...
有人拿 PostgreSQL 的 NoSQL 功能與 MongoDB 效能比較
More...
各家 Linux 發行版本漸漸使用 MariaDB 取代 MySQL 資料庫
More...
mydumper 比mysqldump還快的備份MySQL資料庫
More...

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。