(1)psql
连接数据库
引用
./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')
阅读(2562) | 评论(0) | 转发(0) |