PostgreSQL å¤å¿æ¸ åä¸ºæ¨æä¾äºå¸¸ç¨ç PostgreSQL å½ä»¤åè¯å¥ã
忢åè¿æ¥
$ sudo -u postgres psql
ååºæææ°æ®åº
postgres=# \l
è¿æ¥å°å为 postgres çæ°æ®åº
postgres=# \c postgres
æå¼
postgres=# \q
postgres=# \!
| åæ° | ç¤ºä¾ | 说æ |
|---|---|---|
[-d] <database> | psql -d mydb | è¿æ¥å°æ°æ®åº |
-U | psql -U john mydb | 以ç¹å®ç¨æ·èº«ä»½è¿æ¥ |
-h -p | psql -h localhost -p 5432 mydb | è¿æ¥å°ä¸»æº/ç«¯å£ |
-U -h -p -d | psql -U admin -h 192.168.1.5 -p 2506 -d mydb | è¿æ¥è¿ç¨ PostgreSQL |
-W | psql -W mydb | 强å¶å¯ç |
-c | psql -c '\c postgres' -c '\dt' | æ§è¡ SQL æ¥è¯¢æå½ä»¤ |
-H | psql -c "\l+" -H postgres > database.html | çæ HTML æ¥å |
-l | psql -l | ååºæææ°æ®åº |
-f | psql mydb -f file.sql | 仿件æ§è¡å½ä»¤ |
-V | psql -V | æå° psql çæ¬ |
| :- | - |
|---|---|
\h | SQL å½ä»¤è¯æ³å¸®å© |
\h DELETE | DELETE SQL è¯å¥è¯æ³ |
\? | PostgreSQL å½ä»¤å表 |
å¨ PostgreSQL æ§å¶å°ä¸è¿è¡
æ¾ç¤ºçæ¬
SHOW SERVER_VERSION;
æ¾ç¤ºç³»ç»ç¶æ
\conninfo
æ¾ç¤ºç¯å¢åé
SHOW ALL;
ååºç¨æ·
SELECT rolname FROM pg_roles;
æ¾ç¤ºå½åç¨æ·
SELECT current_user;
æ¾ç¤ºå½åç¨æ·çæé
\du
æ¾ç¤ºå½åæ°æ®åº
SELECT current_database();
æ¾ç¤ºæ°æ®åºä¸çææè¡¨
\dt
ååºå½æ°
\df <schema>
ååºæ°æ®åº
\l
è¿æ¥å°æ°æ®åº
\c <database_name>
æ¾ç¤ºå½åæ°æ®åº
SELECT current_database();
CREATE DATABASE <database_name> WITH OWNER <username>;
DROP DATABASE IF EXISTS <database_name>;
ALTER DATABASE <old_name> RENAME TO <new_name>;
ååºå½åæ°æ®åºä¸ç表
\dt
SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;
å ¨å±å表
\dt *.*.
SELECT * FROM pg_catalog.pg_tables
ååºè¡¨ç»æ
\d <table_name>
\d+ <table_name>
SELECT column_name, data_type, character_maximum_length
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = '<table_name>';
CREATE TABLE <table_name>(
<column_name> <column_type>,
<column_name> <column_type>
);
å建表ï¼ä¸»é®èªå¢
CREATE TABLE <table_name> (
<column_name> SERIAL PRIMARY KEY
);
DROP TABLE IF EXISTS <table_name> CASCADE;
æä¸º postgres ç¨æ·ï¼å¦ææ¨ææéé误
sudo su - postgres
psql
æäº å¯¹æ°æ®åºçæææé
GRANT ALL PRIVILEGES ON DATABASE <db_name> TO <user_name>;
æäºæ°æ®åºè¿æ¥æé
GRANT CONNECT ON DATABASE <db_name> TO <user_name>;
æäºæ¶ææé
GRANT USAGE ON SCHEMA public TO <user_name>;
æäºå½æ°æé
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO <user_name>;
æäºå¨ææè¡¨ä¸éæ©ãæ´æ°ãæå ¥ãå é¤çæé
GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO <user_name>;
å¨è¡¨ä¸æäºæé
GRANT SELECT, UPDATE, INSERT ON <table_name> TO <user_name>;
æäºå¯¹è¡¨çéæ©æé
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user_name>;
ALTER TABLE <table_name> IF EXISTS
ADD <column_name> <data_type> [<constraints>];
æ´æ°æ
ALTER TABLE <table_name> IF EXISTS
ALTER <column_name> TYPE <data_type> [<constraints>];
å é¤å
ALTER TABLE <table_name> IF EXISTS
DROP <column_name>;
å°åæ´æ°ä¸ºèªå¢ä¸»é®
ALTER TABLE <table_name>
ADD COLUMN <column_name> SERIAL PRIMARY KEY;
使ç¨èªå¨éå¢çä¸»é®æå ¥è¡¨ä¸
INSERT INTO <table_name>
VALUES (DEFAULT, <value1>);
INSERT INTO <table_name> (<column1_name>,<column2_name>)
VALUES ( <value1>,<value2> );
éæ© æææ°æ®
SELECT * FROM <table_name>;
读åä¸è¡æ°æ®
SELECT * FROM <table_name> LIMIT 1;
æç´¢æ°æ®
SELECT * FROM <table_name> WHERE <column_name> = <value>;
æå ¥ æ°æ®
INSERT INTO <table_name> VALUES( <value_1>, <value_2> );
æ´æ° æ°æ®
UPDATE <table_name>
SET <column_1> = <value_1>, <column_2> = <value_2>
WHERE <column_1> = <value>;
å é¤ æææ°æ®
DELETE FROM <table_name>;
å é¤ç¹å®æ°æ®
DELETE FROM <table_name>
WHERE <column_name> = <value>;
ååºè§è²
SELECT rolname FROM pg_roles;
CREATE USER <user_name> WITH PASSWORD '<password>';
DROP USER IF EXISTS <user_name>;
æ´æ¹ ç¨æ·å¯ç
ALTER ROLE <user_name> WITH PASSWORD '<password>';
ååº Schemas
\dn
SELECT schema_name FROM information_schema.schemata;
SELECT nspname FROM pg_catalog.pg_namespace;
CREATE SCHEMA IF NOT EXISTS <schema_name>;
DROP SCHEMA IF EXISTS <schema_name> CASCADE;
| :- | - |
|---|---|
\d <table> | æè¿°è¡¨ |
\d+ <table> | è¯¦ç»æè¿°è¡¨æ ¼ |
\dt | ååºå½å模å¼ä¸ç表 |
\dt *.* | ååºæææ¨¡å¼ä¸ç表 |
\dt <schema>.* | ååºæ¶æç表 |
\dp | ååºè¡¨è®¿é®æé |
\det[+] | ååºå¤é¨è¡¨ |
| :- | - |
|---|---|
\e [FILE] | ç¼è¾æ¥è¯¢ç¼å²åº(ææä»¶) |
\ef [FUNC] | ç¼è¾å½æ°å®ä¹ |
\p | æ¾ç¤ºå 容 |
\r | éç½®(æ¸ é¤)æ¥è¯¢ç¼å²åº |
\s [FILE] | æ¾ç¤ºåå²è®°å½æä¿åå°æä»¶ |
\w FILE | å°æ¥è¯¢ç¼å²åºåå ¥æä»¶ |
| :- | - |
|---|---|
\l[+] | ååºæææ°æ®åº |
\dn[S+] | ååºæ¶æ |
\di[S+] | ååºç´¢å¼ |
\du[+] | ååºè§è² |
\ds[S+] | ååºåºå |
\df[antw][S+] | ååºå½æ° |
\deu[+] | ååºç¨æ·æ å° |
\dv[S+] | å表è§å¾ |
\dl | ååºå¤§å¯¹è±¡ |
\dT[S+] | ååºæ°æ®ç±»å |
\da[S] | ååºèå |
\db[+] | ååºè¡¨ç©ºé´ |
\dc[S+] | ååºè½¬å |
\dC[+] | ååºæ¼å表 |
\ddp | ååºé»è®¤æé |
\dd[S] | æ¾ç¤ºå¯¹è±¡æè¿° |
\dD[S+] | ååºå |
\des[+] | ååºå½å¤æå¡å¨ |
\dew[+] | ååºå¤é¨æ°æ®å è£ å¨ |
\dF[+] | ååºææ¬æç´¢é ç½® |
\dFd[+] | ååºææ¬æç´¢è¯å ¸ |
\dFp[+] | ååºææ¬æç´¢è§£æå¨ |
\dFt[+] | ååºææ¬æç´¢æ¨¡æ¿ |
\dL[S+] | ååºç¨åºè¯è¨ |
\do[S] | ååºè¿ç®ç¬¦ |
\dO[S+] | ååºæåºè§å |
\drds | ååºæ¯ä¸ªæ°æ®åºçè§è²è®¾ç½® |
\dx[+] | ååºæ©å± |
Sï¼æ¾ç¤ºç³»ç»å¯¹è±¡ï¼+ï¼éå ç»è
| :- | - |
|---|---|
\c [DBNAME] | è¿æ¥å°æ°æ°æ®åº |
\encoding [ENCODING] | æ¾ç¤ºæè®¾ç½®å®¢æ·ç«¯ç¼ç |
\password [USER] | æ´æ¹å¯ç |
\conninfo | æ¾ç¤ºä¿¡æ¯ |
| :- | - |
|---|---|
\a | 卿ªå¯¹é½å对é½ä¹é´åæ¢ |
\C [STRING] | è®¾ç½®è¡¨æ ¼æ é¢ï¼å¦ææ²¡æååæ¶è®¾ç½® |
\f [STRING] | æ¾ç¤ºæè®¾ç½®æªå¯¹é½çåæ®µåé符 |
\H | 忢 HTML è¾åºæ¨¡å¼ |
\t [on|off] | ä» æ¾ç¤ºè¡ |
\T [STRING] | 设置æåæ¶è®¾ç½® HTML <table> æ ç¾å±æ§ |
\x [on|off] | 忢æ©å±è¾åº |
| :- | - |
|---|---|
\copy ... | å¯¼å ¥/导åºè¡¨ å¦è§ï¼ å¤å¶ |
\echo [STRING] | æå°å符串 |
\i FILE | æ§è¡æä»¶ |
\o [FILE] | å°ææç»æå¯¼åºå°æä»¶ |
\qecho [STRING] | è¾åºæµçå符串 |
| :- | - |
|---|---|
\prompt [TEXT] NAME | 设置åé |
\set [NAME [VALUE]] | 设置åé (å¦ææ²¡æåæ°ï¼åååºææåé) |
\unset NAME | å é¤åé |
| :- | - |
|---|---|
\cd [DIR] | æ´æ¹ç®å½ |
\timing [on|off] | 忢æ¶é´ |
\! [COMMAND] | å¨shell䏿§è¡ |
\! ls -l | å¨shellä¸ååºææ |
\lo_export LOBOID FILE\lo_import FILE [COMMENT]\lo_list\lo_unlink LOBOIDä½¿ç¨ pg_dumpall å¤ä»½æææ°æ®åº
$ pg_dumpall -U postgres > all.sql
ä½¿ç¨ pg_dump å¤ä»½æ°æ®åº
$ pg_dump -d mydb -f mydb_backup.sql
-a  åªè½¬å¨æ°æ®ï¼è䏿¯æ¨¡å¼(schema)-s  åªè½¬å¨æ¨¡å¼ï¼ä¸è½¬å¨æ°æ®-c  å¨éæ°å建ä¹åå 餿°æ®åº-C  è¿åååå»ºæ°æ®åº-t  ä»
转å¨å½å表-F Â æ ¼å¼(cï¼èªå®ä¹ï¼dï¼ç®å½ï¼tï¼tar)ä½¿ç¨ pg_dump -? è·å宿´çé项å表
ä½¿ç¨ psql æ¢å¤æ°æ®åº
$ psql -U user mydb < mydb_backup.sql
ä½¿ç¨ pg_restore æ¢å¤æ°æ®åº
$ pg_restore -d mydb mydb_backup.sql -c
-U  æå®æ°æ®åºç¨æ·-c  å¨éæ°å建ä¹åå 餿°æ®åº-C  è¿åååå»ºæ°æ®åº-e Â å¦æéå°é误éåº-F Â æ ¼å¼(c:èªå®ä¹ï¼d:ç®å½ï¼t:tarï¼p:çº¯ææ¬sql(é»è®¤))ä½¿ç¨ pg_restore -? è·å宿´çé项å表
è·å postgresql.conf çä½ç½®
$ psql -U postgres -c 'SHOW config_file'
éå å° postgresql.conf
listen_addresses = '*'
éå å° pg_hba.conf(ä¸ postgresql.conf ç¸åçä½ç½®)
host all all 0.0.0.0/0 md5
host all all ::/0 md5
éå¯ PostgreSQL æå¡å¨
$ sudo systemctl restart postgresql
å°è¡¨æ ¼å¯¼åºä¸º CSV æä»¶
\copy table TO '<path>' CSV
\copy table(col1,col1) TO '<path>' CSV
\copy (SELECT...) TO '<path>' CSV
å° CSV æä»¶å¯¼å ¥è¡¨æ ¼
\copy table FROM '<path>' CSV
\copy table(col1,col1) FROM '<path>' CSV
å¦è§ï¼å¤å¶
pg_upgrade è·¨çæ¬å级
$ /usr/lib/postgresql/16/bin/pg_upgrade \
-b /usr/lib/postgresql/15/bin \
-B /usr/lib/postgresql/16/bin \
-d /var/lib/postgresql/15/main \
-D /var/lib/postgresql/16/main \
-o " -c config_file=/etc/postgresql/15/main/postgresql.conf" \
-O " -c config_file=/etc/postgresql/16/main/postgresql.conf"
-b  æ§çæ¬äºè¿å¶æä»¶ç®å½-B  æ°çæ¬äºè¿å¶æä»¶ç®å½-d  æ§çæ¬æ°æ®ç®å½-D  æ°çæ¬æ°æ®ç®å½-o  æ§çæ¬ä¸»é
ç½®æä»¶-O  æ°çæ¬ä¸»é
ç½®æä»¶-c  ä»
checkï¼ä¸æ§è¡å级ï¼å¯å
å -cæ£æ¥æ¯å¦ææ¥éï¼æ²¡ææ¥éåè¿è¡åçº§ä½¿ç¨ pg_upgrade -? è·å宿´çé项å表