postgres 必须知道的命令

来源:互联网 发布:淘宝舞帝商城 编辑:程序博客网 时间:2024/05/23 20:13
--查看表空间
select * from pg_tablespace;

--查看语言
select * from pg_language;

--查看角色用户
select * from pg_user;
select * from pg_shadow;
select * from pg_roles;

--查看会话进程
select * from pg_stat_activity;

--查看表
SELECT * FROM pg_tables where schemaname = 'public';

--查看表字段
select * from information_schema.columns where table_schema = 'public' and table_name = 'pf_vip_org';

--查看视图
select * from pg_views where schemaname = 'public';
select * from information_schema.views where table_schema = 'public';

--查看触发器
select * from information_schema.triggers;

--查看序列
select * from information_schema.sequences where sequence_schema = 'public';

 --查看约束
select * from pg_constraint where contype = 'p'  
--u unique,p primary,f foreign,c check,t trigger,x exclusion

select a.relname as table_name,b.conname as constraint_name,b.contype as constraint_type from pg_class a,pg_constraint b where a.oid = b.conrelid and a.relname = 'cc';

--查看索引
select * from pg_index ;

--查看表上存在哪些索引以及大小
select relname,n.amname as index_type from pg_class m,pg_am n where m.relam = n.oid and m.oid in (
select b.indexrelid from pg_class a,pg_index b where a.oid = b.indrelid and a.relname = 'cc');

SELECT c.relname,c2.relname, c2.relpages*8 as size_kb
FROM pg_class c, pg_class c2, pg_index i
WHERE c.relname = 'cc' AND
c.oid = i.indrelid AND
c2.oid = i.indexrelid
ORDER BY c2.relname;

--查看索引定义
select b.indexrelid from pg_class a,pg_index b where a.oid = b.indrelid and a.relname = 'cc';
select pg_get_indexdef(b.indexrelid);

--查看过程函数定义
select oid,* from pg_proc where proname = 'insert_platform_action_exist'; --oid = 24610
select * from pg_get_functiondef(24610);

--查看表大小(不含索引等信息)
select pg_relation_size('cc');                         --368640 byte
select pg_size_pretty(pg_relation_size('cc'))   --360 kB

--查看DB大小
select pg_size_pretty(pg_database_size('smiletao'));   --12M

--查看服务器DB运行状态
[postgres@eyar ~]$ pg_ctl status -D $PGDATA
pg_ctl: server is running (PID: 2373)
/home/postgres/bin/postgres "-D" "/database/pgdata"

--查看每个DB的使用情况(读,写,缓存,更新,事务等)
select * from pg_stat_database

--查看索引的使用情况
select * from pg_stat_user_indexes;

--查看表所对应的数据文件路径与大小
SELECT pg_relation_filepath(oid), relpages FROM pg_class WHERE relname = 'empsalary';

--查看索引与相关字段及大小
 SELECT n.nspname AS schema_name,
        r.rolname as table_owner,
       bc.relname AS table_name,
       ic.relname AS index_name,
       a.attname  AS column_name,
       bc.relpages*8 as index_size_kb     
  FROM pg_namespace n,
       pg_class bc,             -- base class
       pg_class ic,             -- index class
       pg_index i,
       pg_attribute a,           -- att in base
       pg_roles r
  WHERE bc.relnamespace = n.oid
     and i.indrelid = bc.oid
     and i.indexrelid = ic.oid
     and bc.relowner = r.oid
     and i.indkey[0] = a.attnum
     and i.indnatts = 1
     and a.attrelid = bc.oid
     and n.nspname = 'public'
     and bc.relname = 'cc'
  ORDER BY schema_name, table_name, index_name, attname;

--查看PG锁
select * from pg_locks;

备注:relpages*8 是实际所占磁盘大小

--查看表空间大小
select pg_tablespace_size('pg_default');

--查看序列与表的对应关系
  WITH fq_objects AS (SELECT c.oid,c.relname AS fqname ,
                           c.relkind, c.relname AS relation
                    FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace ),

     sequences AS (SELECT oid,fqname FROM fq_objects WHERE relkind = 'S'),
     tables    AS (SELECT oid, fqname FROM fq_objects WHERE relkind = 'r' )
         SELECT
       s.fqname AS sequence,
       '->' as depends,
       t.fqname AS table
      FROM
       pg_depend d JOIN sequences s ON s.oid = d.objid
                 JOIN tables t ON t.oid = d.refobjid
          WHERE
       d.deptype = 'a' and t.fqname = 'cc';
       
1.createdb 数据库名称
产生数据库
2.dropdb 数据库名称
删除数据库

3.CREATE USER 用户名称
创建用户
4.drop User 用户名称
删除用户

5.SELECT usename FROM pg_user;
查看系统用户信息
\du

7.SELECT version();
查看版本信息

8.psql 数据库名
打开psql交互工具

9.mydb=> \i basics.sql
\i 命令从指定的文件中读取命令。

10.COPY weather FROM '/home/user/weather.txt';
批量将文本文件中内容导入到wether表

11.SHOW search_path;
显示搜索路径

12.创建用户
CREATE USER 用户名 WITH PASSWORD '密码'

13.创建模式
CREATE SCHEMA myschema;

14.删除模式
DROP SCHEMA myschema;

15.查看搜索模式
SHOW search_path;

16.设置搜索模式
SET search_path TO myschema,public;

17.创建表空间
create tablespace 表空间名称 location '文件路径';

18.显示默认表空间
show default_tablespace;

19.设置默认表空间
set default_tablespace=表空间名称;

20.指定用户登录
psql MTPS -u

21.显示当前系统时间、
now()

22.配置plpgsql语言
CREATE LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler

23.删除规则

DROP RULE name ON relation [ CASCADE | RESTRICT ]
?
输入
name
要删除的现存的规则.

relation
该规则应用的关系名字(可以有大纲修饰).

CASCADE
自动删除依赖于此规则的对象。

RESTRICT
如果有任何依赖对象,则拒绝删除此规则。这个是缺省。

24.日期格式函数
select 'P'||to_char(current_date,'YYYYMMDD')||'01'

25.产生组
Create Group 组名称

26.修改用户归属组
Alter Group 组名称 add user 用户名称

26.为组赋值权限
?
grant 操作 On 表名称 to group 组名称:

27.创建角色
Create Role 角色名称

28.删除角色
Drop Role 角色名称

29.获得当前postgresql版本
SELECT version();

30.在linux中执行计划任务
通过crontab执行
su root -c "psql -p 5433 -U developer MTPS -c'select test()'"
developer用户的密码存储于环境变量PGPASSWORD中。

31.查询表是否存在
select * from pg_statio_user_tables where relname='你的表名';

32.为用户复制SCHEMA权限
grant all on SCHEMA 作用域名称 to 用户名称

33.整个数据库导出
pg_dumpall -D -p 端口号 -h 服务器IP -U postgres(用户名) > /home/xiaop/all.bak

34.数据库备份恢复
psql -h 192.168.0.48 -p 5433 -U postgres </home/postgres

35.当前日期函数
current_date

36.返回第十条开始的5条记录
select * from tabname limit 5 offset 10;

37.为用户赋模式权限
Grant on schema developer to UDataHouse

38.将字符转换为日期时间
select to_timestamp('2010-10-21 12:31:22', 'YYYY-MM-DD hh24:mi:ss')

39.数据库备份
pg_dumpall -h 192.168.0.4 -p 5433 -U postgres >/DataBack/Postgresql2010012201.dmp
如8.1以后多次输入密码

40.\dn
查看schema

41.删除schema
drop schema _clustertest cascade;

42.导出表

./pg_dump -p 端口号 -U 用户 -t 表名称 -f 备份文件位置 数据库 ;

43.字符串操作函数
select distinct(split_part(ip,'.',1)||'.'||split_part(ip,'.',2)) from t_t_userip order by (split_part(ip,'.',1)||'.'||split_part(ip,'.',2));

44.删除表主键
alter table 表名 drop CONSTRAINT 主键名称;

45.创建表空间
create tablespace 空间名称 location '路径'

46.查看表结构
select * from information_schema.columns?

?


./postgres -D /usr/local/src/data
or
./pg_ctl -D /usr/local/src/data -l logfile start


47.查看数据库大小
SELECT pg_size_pretty(pg_database_size('MTPS')) As fulldbsize;

48.查看数据库表大小
SELECT pg_size_pretty(pg_total_relation_size('developer.t_L_collectfile')) As fulltblsize,
pg_size_pretty(pg_relation_size('developer.t_L_collectfile')) As justthetblsize

49.设置执行超过指定秒数的sql语句输出到日志
log_min_duration_statement = 3

50.超过一定秒数sql自动执行执行计划
shared_preload_libraries = 'auto_explain'
custom_variable_classes = 'auto_explain'
auto_explain.log_min_duration = 4s

51.数据库备份
?select pg_start_backup('backup baseline');
?select pg_stop_backup();

?recovery.conf
?restore_command='cp /opt/buxlog/%f %p'

52.重建索引
?REINDEX { INDEX | TABLE | DATABASE | SYSTEM } name [ FORCE ]
?INDEX
?重新建立声明了的索引。

?TABLE
?重新建立声明的表的所有索引。如果表有个从属的"TOAST"表,那么这个表也会重新索引。

?DATABASE
?重建当前数据库里的所有索引。 除非在独立运行模式下,会忽略在共享系统表上的索引(见下文)。

?SYSTEM
?在当前数据库上重建所有系统表上的索引。不会处理在用户表上的索引。 另外,除了是在单主机模式下,共享的系统表也会被忽略(见下文)。

?name
?需要重建索引的索引,表或者数据库的名称。 表和索引名可以有模式修饰。 目前,REINDEX DATABASE 和 REINDEX SYSTEM 只能重建当前数据库的索引, 因此其参数必须匹配当前数据库的名字。

?FORCE
?这是一个废弃的选项,如果声明,会被忽略。


54.数据字典查看表结构
SELECT column_name, data_type from information_schema.columns where table_name = 'blog_sina_content_train';

?


52.查看被锁定表
SELECT pg_class.relname AS table, pg_database.datname AS database, pid, mode, granted
FROM pg_locks, pg_class, pg_database
WHERE pg_locks.relation = pg_class.oid
AND pg_locks.database = pg_database.oid;

53.查看客户端连接情况
SELECT client_addr ,client_port,waiting,query_start,current_query FROM pg_stat_activity;

54.判断字符是否全部为数字
select * from t_c_username where length(username)=11 and substr(username,1,11) SIMILAR TO '[0-9]+';


55.查看客户端编码
show client_encoding;      
0 0