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