微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL常用命令

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


文本文件模式:
引用
Backup: $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}
Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}

tar.gz文件模式:
引用
Backup: $ pg_dump -U {user-name} {source_db} -F tar -f {dumpfilename.tar.gz}
Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.tar.gz}


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

把SELECT文结果导出到CSV:
引用
copY (select * from tablename) TO '/tmp/output.csv' DELIMITER ','


通过psql实现:
引用
psql dbname -c "select * from tablename" -A -F,| sed '$d' > /tmp/output.csv

引用
psql dbname -f /usr/local/src/myselect.sql -A -F,| sed '$d' > /tmp/output.csv


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

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


(4)其他

设置编码:
引用
psql> CREATE DATABASE new_my_db with template=template0 encoding='UTF8' lc_collate='ja_JP.UTF-8' lc_ctype='ja_JP.UTF-8';


创建一个只读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')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐