发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:6   其中:访客  6   博主  0

    • ag

      Tracking Disk Usage
      select pg_size_pretty(pg_database_size(‘learning’));
      pg_size_pretty(pg_relation_size(‘users’));

      more:http://postgresguide.com/tips/disk-usage.html

      • ag

        补充一点:
        锁(lock)begin之后rollback之前的增、删、改不会真正静态化到硬盘中,会临时显示在表中,但是rollback之后会消失。

        • ag

          在PG中操作外部数据库数据的两张实现方式:
          dblink和postgres_fdw扩展

          • ag

            dblink,能够在一个数据库中操作另外一个远程的数据库。
            准备工作:
            1. 使用dblink,在安装PostgreSQL的时候,必须把的位于PostgreSQL下的contrib\dblink源码编译安装,
               #cd contrib/dblink
               #make
               #make install
               之后可以看到在$PGHOME下的lib下就有个dblink.so文件

            2. 使用psql dbname之后:
               使用create extention dblink; 扩展dblink功能。
            more:https://blog.csdn.net/luojinbai/article/details/45032683

            • ag

              PG的优势讨论:
              https://www.zhihu.com/question/20010554

              • ag

                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

                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.常看数据库.conf配置
                show all

                55.修改数据库postgresql.conf参数
                修改postgresql.conf内容
                pg_ctl reload

                56.回滚日志强制恢复
                pg_resetxlog -f 数据库文件路径

                idvalue | remark
                ———-+——–
                33953557 | inser

                57.当前日期属于一年中第几周
                select EXTRACT(week from TIMESTAMP ‘2010-10-22’);

                58.显示最近执行命令
                \s

                I. SQL 命令
                ABORT — 退出当前事务
                ALTER AGGREGATE — 修改一个聚集函数的定义
                ALTER CONVERSION — 修改一个编码转换的定义
                ALTER DATABASE — 修改一个数据库
                ALTER DOMAIN — 改变一个域的定义
                ALTER FUNCTION — 修改一个函数的定义
                ALTER GROUP — 修改一个用户组
                ALTER INDEX — 改变一个索引的定义
                ALTER LANGUAGE — 修改一个过程语言的定义
                ALTER OPERATOR — 改变一个操作符的定义
                ALTER OPERATOR CLASS — 修改一个操作符表的定义
                ALTER ROLE — 修改一个数据库角色
                ALTER SCHEMA — 修改一个模式的定义
                ALTER SEQUENCE — 更改一个序列生成器的定义
                ALTER TABLE — 修改表的定义
                ALTER TABLESPACE — 改变一个表空间的定义
                ALTER TRIGGER — 改变一个触发器的定义
                ALTER TYPE — 改变一个类型的定义
                ALTER USER — 改变数据库用户帐号
                ANALYZE — 收集与数据库有关的统计
                BEGIN — 开始一个事务块
                CHECKPOINT — 强制一个事务日志检查点
                CLOSE — 关闭一个游标
                CLUSTER — 根据一个索引对某个表集簇
                COMMENT — 定义或者改变一个对象的评注
                COMMIT — 提交当前事务
                COMMIT PREPARED — 提交一个早先为两阶段提交准备好的事务
                COPY — 在表和文件之间拷贝数据
                CREATE AGGREGATE — 定义一个新的聚集函数
                CREATE CAST — 定义一个用户定义的转换
                CREATE CONSTRAINT TRIGGER — 定义一个新的约束触发器
                CREATE CONVERSION — 定义一个新的的编码转换
                CREATE DATABASE — 创建新数据库
                CREATE DOMAIN — 定义一个新域
                CREATE FUNCTION — 定义一个新函数
                CREATE GROUP — 定义一个新的用户组
                CREATE INDEX — 定义一个新索引
                CREATE LANGUAGE — 定义一种新的过程语言
                CREATE OPERATOR — 定义一个新的操作符
                CREATE OPERATOR CLASS — 定义一个新的操作符表
                CREATE ROLE — define a new database role
                CREATE RULE — 定义一个新的重写规则
                CREATE SCHEMA — 定义一个新的模式
                CREATE SEQUENCE — 创建一个新的序列发生器
                CREATE TABLE — 定义一个新表
                CREATE TABLE AS — 从一条查询的结果中定义一个新表
                CREATE TABLESPACE — 定义一个新的表空间
                CREATE TRIGGER — 定义一个新的触发器
                CREATE TYPE — 定义一个新的数据类型
                CREATE USER — 创建一个新的数据库用户帐户
                CREATE VIEW — 定义一个视图
                DEALLOCATE — 删除一个准备好的查询
                DECLARE — 定义一个游标
                DELETE — 删除一个表中的行
                DROP AGGREGATE — 删除一个用户定义的聚集函数
                DROP CAST — 删除一个用户定义的类型转换
                DROP CONVERSION — 删除一个用户定义的编码转换
                DROP DATABASE — 删除一个数据库
                DROP DOMAIN — 删除一个用户定义的域
                DROP FUNCTION — 删除一个函数
                DROP GROUP — 删除一个用户组
                DROP INDEX — 删除一个索引
                DROP LANGUAGE — 删除一个过程语言
                DROP OPERATOR — 删除一个操作符
                DROP OPERATOR CLASS — 删除一个操作符表
                DROP ROLE — 删除一个数据库角色
                DROP RULE — 删除一个重写规则
                DROP SCHEMA — 删除一个模式
                DROP SEQUENCE — 删除一个序列
                DROP TABLE — 删除一个表
                DROP TABLESPACE — 删除一个表空间
                DROP TRIGGER — 删除一个触发器定义
                DROP TYPE — 删除一个用户定义数据类型
                DROP USER — 删除一个数据库用户帐号
                DROP VIEW — 删除一个视图
                END — 提交当前的事务
                EXECUTE — 执行一个准备好的查询
                EXPLAIN — 显示语句执行规划
                FETCH — 用游标从查询中抓取行
                GRANT — 定义访问权限
                INSERT — 在表中创建新行
                LISTEN — 监听一个通知
                LOAD — 装载或重载一个共享库文件
                LOCK — 明确地锁定一个表
                MOVE — 重定位一个游标
                NOTIFY — 生成一个通知
                PREPARE — 创建一个准备好的查询
                PREPARE TRANSACTION — 为当前事务做两阶段提交的准备
                REINDEX — 重建索引
                RELEASE SAVEPOINT — 删除一个前面定义的保存点
                RESET — 把一个运行时参数值恢复为缺省值
                REVOKE — 删除访问权限
                ROLLBACK — 退出当前事务
                ROLLBACK PREPARED — 取消一个早先为两阶段提交准备好的事务
                ROLLBACK TO — 回滚到一个保存点
                SAVEPOINT — 在当前事务里定义一个新的保存点
                SELECT — 从表或视图中取出若干行
                SELECT INTO — 从一个查询的结果中定义一个新表
                SET — 改变运行时参数
                SET CONSTRAINTS — 设置当前事务的约束检查模式
                SET ROLE — set the current user identifier of the current session
                SET SESSION AUTHORIZATION — 为当前会话设置会话用户标识符和当前用户标识符
                SET TRANSACTION — 设置当前事务的特性
                SHOW — 显示运行时参数的数值
                START TRANSACTION — 开始一个事务块
                TRUNCATE — 清空一个或者一堆表
                UNLISTEN — 停止监听通知信息
                UPDATE — 更新一个表中的行
                VACUUM — 垃圾收集以及可选地分析一个数据库
                II. 客户端应用
                clusterdb — 对一个PostgreSQL数据库进行建簇
                createdb — 创建一个新的 PostgreSQL 数据库
                createlang — 定义一种新的 PostgreSQL 过程语言
                createuser — 定义一个新的 PostgreSQL 用户帐户
                dropdb — 删除一个现有 PostgreSQL 数据库
                droplang — 删除一种 PostgreSQL 过程语言
                dropuser — 删除一个 PostgreSQL 用户帐户
                ecpg — 嵌入的 SQL C 预处理器
                pg_config — 检索已安装版本的 PostgreSQL 的信息
                pg_dump — 将一个PostgreSQL数据库抽出到一个脚本文件或者其它归档文件中
                pg_dumpall — 抽出一个 PostgreSQL 数据库集群到脚本文件中
                pg_restore — 从一个由 pg_dump 创建的备份文件中恢复 PostgreSQL 数据库。
                psql — PostgreSQL 交互终端
                vacuumdb — 收集垃圾并且分析一个PostgreSQL 数据库
                III. PostgreSQL 服务器应用
                initdb — 创建一个新的 PostgreSQL数据库集群
                ipcclean — 从失效的PostgreSQL服务器中删除共享内存和信号灯
                pg_controldata — 显示一个 PostgreSQL 集群的控制信息
                pg_ctl — 启动,停止和重起 PostgreSQL
                pg_resetxlog — 重置一个 PostgreSQL 数据库集群的预写日志以及其它控制内容
                postgres — 以单用户模式运行一个 PostgreSQL服务器
                postmaster — PostgreSQL多用户数据库服务器

                59.导出数据库角色

                /data/pgsql/bin/pg_dumpall -p 5432 -U postgres -r >/tmp/postgres_8.3_role.bak

                60.修改sequence所有者

                grant all on sequence名称 to 所有者;

                61.修改sequence初始值

                Alter SEQUENCE sequencename START value;

                62.查看sequence当前值

                SELECT currval(‘sequencename’);

                63.查看sequence下一值

                SELECT nextval(‘sequencename’);

                64.设置sequence当前值

                alter SEQUENCE sequencename restart with startvalue;

                SELECT nextval(‘sequencename’);

                65.查询表结构

                SELECT a.attnum,a.attname AS field,t.typname AS type,a.attlen AS length,a

                .atttypmod AS lengthvar,a.attnotnull AS notnull

                FROM pg_class c,pg_attribute a,pg_type t

                WHERE c.relname=表名称and a.attnum > 0 and a.attrelid = c.oid and a

                .atttypid = t.oid

                66.将查询结果直接输出到文件

                在psql中

                \o 文件路径

                select datname,rolname from pg_database a left outer join pg_roles b on a.datdba=b.oid ;

                \o

                67.查询数据库所有则

                select datname,rolname from pg_database a left outer join pg_roles b on a.datdba=b.oid ;

                68.结束正在执行的事务

                SELECT * from pg_stat_activity;

                select pg_cancel_backend(‘procpid’);

                60.结束session

                SELECT * from pg_stat_activity;

                select pg_terminate_backend(‘procpid’);

                61.postgresql取消转义字符功能

                将postgresql.conf文件中的standard_conforming_strings设置为on

                62.查询正在执行SQL

                SELECT
                procpid,
                start,
                now() – start AS lap,
                current_query
                FROM
                (SELECT
                backendid,
                pg_stat_get_backend_pid(S.backendid) AS procpid,
                pg_stat_get_backend_activity_start(S.backendid) AS start,
                pg_stat_get_backend_activity(S.backendid) AS current_query
                FROM
                (SELECT pg_stat_get_backend_idset() AS backendid) AS S
                ) AS S
                WHERE
                current_query <> ”
                ORDER BY
                lap DESC;