返回顶部
首页 > 资讯 > 数据库 >PostgreSQL 常用脚本
  • 419
分享到

PostgreSQL 常用脚本

PostgreSQL常用脚本 2015-03-18 03:03:09 419人浏览 绘本
摘要

数据定义 数据库 -- 创建数据库 -- database_name,数据库名称 -- database_user,用户名 CREATE DATABASE database_name WITH OWNER = database_

PostgreSQL 常用脚本

数据定义

数据库


-- 创建数据库
-- database_name,数据库名称
-- database_user,用户名
CREATE DATABASE database_name WITH OWNER = database_user;
CREATE DATABASE database_name OWNER database_user;

-- 复制数据库
-- database_name,数据库名称
-- database_user,用户名
-- original_database_name,原始数据库名称
CREATE DATABASE database_name WITH TEMPLATE original_database_name OWNER database_user;


-- 新增列
-- table_name,表名
-- column_name,列名
ALTER TABLE table_name ADD COLUMN IF NOT EXISTS column_name VARCHAR(100) NULL;

扩展


-- 创建 UUID 扩展
CREATE EXTENSioN IF NOT EXISTS "uuid-ossp";

-- 验证 UUID 扩展
SELECT uuid_generate_v4();

-- 创建 cube 扩展
CREATE EXTENSION IF NOT EXISTS cube;

-- 创建 earthdistance 扩展
CREATE EXTENSION IF NOT EXISTS earthdistance;

函数


-- 隐式将整形转换成字符串,但是会有一些问题,参考 https://stackoverflow.com/questions/50025750/postgres-convert-integer-into-text。通常情况下还是建议使用 CAST 函数来实现。
-- 使用场景:在数据库迁移的时候(比如 Microsoft SQL Server 转成 postgresql,Microsoft sql Server 默认是支持的)需要隐式转换,以达到快速实现的目的
CREATE FUNCTION pg_catalog.text(integer) RETURNS text STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT textin(int4out($1));';
CREATE CAST (integer AS text) WITH FUNCTION pg_catalog.text(integer) AS IMPLICIT;
COMMENT ON FUNCTION pg_catalog.text(integer) IS 'convert integer to text';
CREATE FUNCTION pg_catalog.text(bigint) RETURNS text STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT textin(int8out($1));';
CREATE CAST (bigint AS text) WITH FUNCTION pg_catalog.text(bigint) AS IMPLICIT;
COMMENT ON FUNCTION pg_catalog.text(bigint) IS 'convert bigint to text';

索引


-- Query the indexes of a table
SELECT * FROM pg_indexes WHERE tablename IN ('table_name');

-- 查询所有索引
SELECT
    i.relname AS indname ,
    i.relowner AS indowner ,
    idx.indrelid::REGCLASS ,
    am.amname AS indam ,
    idx.indkey ,
    ARRAY(
    SELECT
        pg_get_indexdef(idx.indexrelid,
        k + 1,
        TRUE)
    FROM
        GENERATE_SUBSCRIPTS(idx.indkey, 1) AS k
    ORDER BY
        k) AS indkey_names ,
    idx.indexprs IS NOT NULL AS indexprs ,
    idx.indpred IS NOT NULL AS indpred
FROM
    pg_index AS idx
JOIN pg_class AS i ON
    i.oid = idx.indexrelid
JOIN pg_am AS am ON
    i.relam = am.oid
JOIN pg_namespace AS ns ON
    ns.oid = i.relnamespace
    AND ns.nspname = ANY (CURRENT_SCHEMAS(FALSE));

-- 查询所有索引,排除系统表
SELECT
    U.usename AS user_name,
    ns.nspname AS schema_name,
    idx.indrelid :: REGCLASS AS table_name,
    i.relname AS index_name,
    idx.indisunique AS is_unique,
    idx.indisprimary AS is_primary,
    am.amname AS index_type,
    idx.indkey,
    ARRAY(
    SELECT
        pg_get_indexdef(idx.indexrelid,
        k + 1,
        TRUE)
    FROM
        GENERATE_SUBSCRIPTS(idx.indkey, 1) AS k
    ORDER BY
        k ) AS index_keys,
    (idx.indexprs IS NOT NULL)
    OR (idx.indkey::INT[] @> ARRAY[0]) AS is_functional,
    idx.indpred IS NOT NULL AS is_partial
FROM
    pg_index AS idx
JOIN pg_class AS i ON
    i.oid = idx.indexrelid
JOIN pg_am AS am ON
    i.relam = am.oid
JOIN pg_namespace AS NS ON
    i.relnamespace = NS.OID
JOIN pg_user AS U ON
    i.relowner = U.usesysid
WHERE
    NOT nspname LIKE 'pg%';

权限控制


-- CREATE USER OR ROLE,PostgreSQL 中创建用户和角色是等效的
-- role_name,用户角色名称
-- user_passWord,用户密码
-- user_name,用户角色名称
CREATE ROLE role_name WITH CREATEDB CREATEROLE LOGIN PASSWORD 'user_password';
CREATE user user_name PASSWORD 'user_password';

-- 分配所有权限
-- database_name,数据库名称
-- database_user,数据库用户
GRANT ALL PRIVILEGES ON database_name TO database_user;

-- 修改表的 Owner
ALTER TABLE table_name OWNER TO database_user;

-- 分配 FUNCTION 的权限给指定用户
-- function_name,函数名称
-- parameter1_type,第一个函数参数类型
-- parameter2_type,第二个函数参数类型
-- database_user,数据库用户
GRANT EXECUTE ON FUNCTION function_name(parameter1_type, parameter2_type, ...) TO database_user;

-- 修改 FUNCTION 的 Owner
-- function_name,函数名称
-- parameter1_type,第一个函数参数类型
-- parameter2_type,第二个函数参数类型
-- database_user,数据库用户
ALTER FUNCTION function_name(parameter1_type, parameter2_type, ...) OWNER TO database_user;

运行分析


-- 查询当前数据库 TOP 20 大表
SELECT table_name
    ,pg_size_pretty(pg_relation_size(table_schema || '.' || table_name)) AS size
FROM infORMation_schema.tables
ORDER BY pg_relation_size(table_schema || '.' || table_name) DESC LIMIT 20;

-- 查询单个表大小
SELECT pg_size_pretty(pg_relation_size(table_name));

-- 查询数据库活动的查询
SELECT current_timestamp - query_start AS runtime
    ,query_start
    ,datname
    ,pid
    ,query
FROM pg_stat_activity
WHERE query_start IS NOT NULL
ORDER BY 1 DESC limit 20;

运行维护


-- Cancel Processes by pid
SELECT pg_cancel_backend(pid int);

-- Terminate Processes by pid
SELECT pg_terminate_backend(pid int);

-- Kill all existing connections in the original database
-- source_db,数据库名称
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'source_db'
AND pid <> pg_backend_pid();

-- garbage-collect and optionally analyze a database
-- table_name,数据库表名
VACUUM table_name;
VACUUM FULL table_name;

配置


-- 修改 max_locks_per_transaction
ALTER SYSTEM SET max_locks_per_transaction = 300;

-- 重载配置信息,使配置生效
-- pg_hba.conf
SELECT pg_reload_conf();

备份还原


pg_dump -h host_name -U database_user -F c -b -v -f file_path database_name

pg_restore -h host_name -U database_user --no-owner -d database_name file_path

其他


-- Prepare a statement for execution
PREPARE foo(TEXT, TEXT, TEXT) AS
SELECT *
FROM foobar
WHERE foo = $1
    AND bar = $2
    OR baz = $3
EXECUTE foo('foo', 'bar', 'baz');
DEALLOCATE foo;

时间处理


-- 查询时间差
SELECT EXTRACT(epoch FROM (begin_time - end_time));

-- Query the last month in format 'YYYYMM'
SELECT to_char(date_trunc('month', current_date - interval '1' month), 'YYYYMM');

psql


# 打开数据库连接
psql -h host_name -U database_user

# 列出所有的数据库
l

# 连接数据
c database_name
您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL 常用脚本

本文链接: https://lsjlt.com/news/3685.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PostgreSQL 常用脚本
    数据定义 数据库 -- 创建数据库 -- database_name,数据库名称 -- database_user,用户名 CREATE DATABASE database_name WITH OWNER = database_...
    99+
    2015-03-18
    PostgreSQL 常用脚本
  • MySQL常用脚本
    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给...
    99+
    2023-10-18
    adb android MySQL oracle sqlserver sql
  • Linux 常用脚本
    以下是几个 Linux 常用脚本示例: 自动备份脚本 这个脚本用于定期备份指定目录中的文件,并将备份文件保存到另一个目录中。 #!/bin/bashbackup_dir="/home/user/backup/"source_dir="/ho...
    99+
    2023-08-19
    linux 运维 服务器
  • ORACLE 常用脚本(3)
    用户的管理一、ORACLE的安全域 1、TABLESPACE QUOTAS:表空间的使用定额 2、DEFAULT TABLESPACE:默认表空间 3、TEMPORARY TABLESPACE:指定临时表空间。 4、ACCOUNT LOCK...
    99+
    2023-01-31
    脚本 常用 ORACLE
  • PostgreSQL 数据库备份脚本
    PostgreSQL 数据库备份脚本 #!/bin/bash # PG家目录(/opt/postgresql/pg96/) PG_HOME=${PGHOME} # pg数据库连接信息 PG_HOST="127.0.0.1" PG_P...
    99+
    2014-07-22
    PostgreSQL 数据库备份脚本
  • 解压版PostgreSQL启动脚本
    postgresql.cmd @echo off title PostgreSQL rem 变量设置 if not defined PGSQL set PGSQL=%~dp0 if not defined...
    99+
    2024-04-02
  • MHA常用脚本简介
    master_ip_failover 常见的HA环境下,大多是情况会给master分配一个虚拟IP,如果master宕机,HA软件像一个Pacemaker将虚拟IP转移到备用的master上. ...
    99+
    2024-04-02
  • 50个常用Python脚本
    50个常用Python脚本的代码示例: 复制文件和目录 import shutilshutil.copy2('source_file', 'destination')shutil.copytree('...
    99+
    2023-09-01
    python excel 开发语言
  • shell脚本操作postgresql的代码
    PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比...
    99+
    2022-12-09
    shell脚本操作postgresql shell脚本postgresql
  • Oracle有什么常用脚本
    这篇文章主要讲解了“Oracle有什么常用脚本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle有什么常用脚本”吧!1.linux 启动数据库脚本 ...
    99+
    2024-04-02
  • python常用的备份脚本
    脚本介绍:1)备份源目录的文件2)目标文件以tar 和bzip2的方式压缩之后放在当前日期文件夹下4)备份文件以时间注释和执行脚本的用户命名3)主要用到了时间模块,系统模块,和getpass模块4)source 可以修改为想备份的目录,因为...
    99+
    2023-01-31
    脚本 备份 常用
  • VBS常用脚本有哪些
    本篇内容介绍了“VBS常用脚本有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!将 域用户或租添加到本地组 Set objGro...
    99+
    2023-06-08
  • 常见的Python脚本
    1、冒泡排序 lis = [56,12,1,8,354,10,100,34,56,7,23,456,234,-58] def sortport(): for i in range(len(lis)-1): fo...
    99+
    2023-01-30
    脚本 常见 Python
  • RMAN常用脚本是怎样的
    这期内容当中小编将会给大家带来有关RMAN常用脚本是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 在学习了rman后自我感觉比较好用...
    99+
    2024-04-02
  • 详解JavaScript常用的Hook脚本
    本文Hook脚本 来自 包子 页面最早加载代码Hook时机 在source里 用dom事件断点的script断点然后刷新网页,就会断在第一个js标签,这时候就可以注入代码进行hook...
    99+
    2024-04-02
  • 常用的Sheel脚本有哪些
    这篇文章给大家分享的是有关常用的Sheel脚本有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、list_sys_status.sh显示系统使用的以下信息:主机名、IP地址、子网掩码、网关、DNS服务器IP...
    99+
    2023-06-27
  • python常用运维脚本实例
    file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建。但是更推荐使用内置函数open()来打开一个文件 .首先open是内置函数,使用方式是open('...
    99+
    2023-01-31
    脚本 实例 常用
  • Windows常用脚本合集(推荐)
    目录Windows 常用脚本合集1.问题描述2.软硬件描述3.使用方法4.常用shellWindows 常用脚本合集 1.问题描述 因为使用windows一些常用命令需要手动操作,比...
    99+
    2024-04-02
  • 常用的shell脚本有哪些
    这篇文章主要讲解了“常用的shell脚本有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“常用的shell脚本有哪些”吧!1.模拟linnux登录shell代码如下:#/bin/bashe...
    99+
    2023-06-09
  • VBS中常用脚本有哪些
    这篇文章主要讲解了“VBS中常用脚本有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VBS中常用脚本有哪些”吧!将域用户或租添加到本地组 Set objGroup =...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作