postgreSQL常用命令

来源:互联网 发布:giga365新域名 编辑:程序博客网 时间:2024/06/07 02:35
连接数据库 
引用
./psql -U username -d dbname

列举数据库 
引用
psql> \l

列举表 
引用
psql> \dt

执行SQL文件 
引用
psql> \i test.sql

查看执行时间 
引用
psql> \timing 
psql> select * from tablename;

查看表结构 
引用
psql> \d tablename

切换数据库 
引用
psql> \c dbname

查看帮助 
引用
psql> \?

退出 psql 
引用
psql> \q


(2)pg_dump 

备份表: 
引用
./pg_dump -U username -h hostaddress -t tablename dbname > filename ;

备份多个表: 
引用
./pg_dump -U username -h hostaddress -t tablenameA -t tablenameB dbname > filename ;

备份数据库: 
引用
./pg_dump -U username -h hostaddress dbname > filename ; --默认导出schema和数据COPY文 
./pg_dump -U username -h hostaddress --data-only dbname > filename ; --只导出数据 
./pg_dump -U username -h hostaddress --inserts dbname > filename ; --数据INSERT文 
./pg_dump -U username -h hostaddress --column-inserts dbname > filename ; --带字段名的数据INSERT文

恢复数据库: 
引用
./psql -U username -h hostaddress -d dbname < filename ;


(3)COPY 

导出表到默认输出STDOUT: 
引用
psql> COPY tablename TO STDOUT;

导出表到SQL文件: 
引用
psql> COPY tablename TO '/home/tablename.sql';

指定导出间隔符,默认是 \t ,这里为 | : 
引用
psql> COPY tablename TO STDOUT DELIMITER '|';

导出指定字段的数据: 
引用
psql> COPY tablename (name,email) TO STDOUT;

导出为CSV格式: 
引用
psql> COPY tablename (name, email) TO '/home/tablename.csv' CSV HEADER;

从文件导入数据: 
引用
psql> COPY tablename FROM '/home/tablename.sql';

导入文件数据,指定间隔符为 | : 
引用
psql> COPY tablename FROM '/home/tablename.sql' DELIMITER |;


(4)其他 

创建一个只读user 
引用
CREATE ROLE xxx LOGIN PASSWORD 'yyy'; 
GRANT CONNECT ON DATABASE vl60_acct_rensn TO xxx; 
GRANT USAGE ON SCHEMA public TO xxx; 

GRANT SELECT ON cmn_account TO xxx; 
GRANT SELECT ON paramsetting TO xxx; 
GRANT SELECT ON cmn_mailaccount TO xxx; 
GRANT SELECT ON log_mailaccount TO xxx; 

SELECT 'GRANT SELECT ON ' || relname || ' TO xxx;' 
FROM pg_class JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace 
WHERE nspname = 'public' AND relkind IN ('r', 'v')
1 0