加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL常用命令

发布时间:2020-12-13 18:20:34 所属栏目:百科 来源:网络整理
导读:(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 切换数据库
(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')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读