PostgreSQL二次开发
文章平均质量分 63
kmblack1
这个作者很懒,什么都没留下…
展开
-
PostgreSQL获得任意值的数据类型 pg_typeof
PostgreSQL通过系统函数pg_typeof获得任意值的数据类型原创 2022-06-23 17:28:00 · 2319 阅读 · 3 评论 -
postgresql.conf配置参数值范围速查表
PostgreSQL12temp_buffers 最大支持至1GBwork_mem2097151static struct config_int ConfigureNamesInt[] ={ { {"archive_timeout", PGC_SIGHUP, WAL_ARCHIVING, gettext_noop("Forces a switch to the next WAL file if a " "new file has not been started withi原创 2021-01-18 14:08:27 · 437 阅读 · 0 评论 -
PostgreSQL计算integer类型的has值
1 出现的问题从PostgreSQL10以后PostgreSQL自带分区,但使用分区有利有弊,例如以下比较常规的需求./**************************************************************************************** 传感器类型drop table if exists sentypes;*******************************************************************原创 2021-01-14 22:24:27 · 1374 阅读 · 0 评论 -
PostgreSQL分布式id-雪花算法snowflake
基础知识基本原理:由4部份组成一个64字节的整数(bigint).字节计算读取顺序从左至右,下标计数从0开始.第0位为符号位:正数是0,负数是1.但是有些语言没有无符号整数(java\PostgreSQL),为保证可移植性因此固定为0。第1-41位为时间戳:单位为毫秒,时间戳只有41位,所以值范围为0-2199023255551毫秒,最多可以存储69年的数据.因为值范围较小,不能直接使用UNIX时间戳,应该使用时间戳的差值(当前时间-你指定的开始时间).你指定的开始时间可以是任意时间,比如系统于2原创 2020-12-15 00:56:22 · 4977 阅读 · 3 评论 -
快速设置struct sockaddr_in结构体
1 必须的宏定义/*------------------------------------------------------------------------- * * pg_bswap.h * Byte swapping. * * Macros for reversing the byte order of 16, 32 and 64-bit unsigned integers. * For example, 0xAABBCCDD becomes 0xDDCCBBAA. Thes原创 2020-09-05 17:01:23 · 241 阅读 · 0 评论 -
判断pg_pathman分区表是否存在
只适合PostgreSQL9.4及以上版本.删除pg_pathman分区表和主表do $$ begin if( to_regclass('tablename') is not null ) then if( (select 1 from pathman_config where partrel = 'tablename'::regclass) is not null) then...原创 2018-11-15 18:21:25 · 2322 阅读 · 1 评论 -
PostgreSQL创建字段设置默认值并且不锁表
1创建测试表drop table if exists test009;create table test009( objectid bigint not null, name text not null, --flag integer default(2) not null, --用于演示添加的字段 constraint pk_test009_objectid primary k...原创 2018-09-21 16:46:24 · 18920 阅读 · 0 评论 -
再谈PostgreSQL创建数据库
1背景在实践中使用Postgresql数据库时,发现很多同学经常直接使用postgres用户和系统的postgres库,这是非常不安全的.postgres用户和系统的postgres库一般只用来对数据库进行管理,其它任何情况时都不应该使用postgres用户和系统的postgres库.题外话,好的设计可以达到事半功倍的效果…2 正确的姿势以linux为例,windows同理.2.1 规...原创 2018-10-18 11:20:43 · 2017 阅读 · 0 评论 -
PostgreSQL与Unicode11.0字符集
Unicode 11.0 字符集参考文献下载标准CJK Extension-A汉字范围 U+3400-4DBFCJK Extension B汉字范围 U+20000-2A6DFCJK Extension C汉字范围 U+2A700-2B73FCJK Extension D汉字范围 U+2B740-2B81FCJK Extension E汉字范围 U+2B820-2CEAFCJK E...原创 2018-09-29 17:46:54 · 1201 阅读 · 0 评论 -
PostgreSQL常用的统计信息
参考资料/*统计用户表信息,等同于pgAdmin4 Statistics标签显示的内容*/select relname as "表名", seq_scan as "顺序扫描的次数", seq_tup_read as "顺序扫描获取活动行的数量",原创 2018-10-25 09:50:53 · 1869 阅读 · 0 评论 -
PostgreSQL 执行动态sql
虽然真的很鸡肋,并且性能不杂滴,但聊胜于无吧.drop function if exists exe_dynamic_sql(bigint);drop function if exists exe_dynamic_count(bigint);--返回记录集create or replace function exe_dynamic_sql(ival bigint) returns...原创 2018-09-14 16:18:39 · 11928 阅读 · 0 评论 -
PostgreSQL 当月最后一天的工作日 , 计算日期是星期几
drop function if exists getMonLastDayWeek(date);drop function if exists intervalDay(date);drop function if exists getMonMaxDay(integer,integer);drop function if exists getMonMaxDate(integer,integer...原创 2018-09-05 09:36:44 · 5631 阅读 · 0 评论 -
PostgreSQL Limit对索引的影响
服务器CPU排行榜 相关行业的同学如看不懂应该该好好反思一下自己了,思考人生了.1.创建测试表drop table if exists test;create table test( objectid serial not null, num integer not null, ref integer[] not null, constraint p...原创 2018-08-29 12:35:20 · 2477 阅读 · 0 评论 -
PostgreSQL ERROR: Table '' does not occur in the search_path
PostgreSQL 出现这个错误的原因是表名大小写导致的.例如:create table Test( objectid integer not null, /*唯一编号*/ name varchar(32) not null, /*名称*/ cons...原创 2018-07-23 10:44:10 · 544 阅读 · 0 评论 -
取出每组的前 n 条 记录, 来个高效的写法
drop function if exists fun_tests(bigint);create or replace function fun_tests(bigint default 5) returns table(pid bigint,file_name text)as $$ declare v_len integer; v_parentid...原创 2018-06-20 13:27:49 · 346 阅读 · 0 评论 -
PostgreSQL fillfactor参数详解
1 基本概念PostgreSQL每个表和索引的数据都是由很多个固定尺寸的页面存储(通常是 8kB,不过在编译服务器时[–with-blocksize]可以选择其他不同的尺寸)PostgreSQL中数据操作永远是Append操作,具体含义如下: insert 时向页中添加一条数据 update 将历史数据标记为无效,然后向页中添加新数据 delete 将历史数据标记为无效 ...原创 2018-06-29 18:01:22 · 8662 阅读 · 2 评论 -
PostgreSQL使用MS Sqlerver外部表
1.安装tds_fdw依赖包sudo apt-get install freetds-dev2.下载并安装软件包Sybase and Microsoft SQL Servercd ~unzip tds_fdw-master.zipcd tds_fdw-mastermake USE_PGXS=1 PG_CONFIG=/usr/local/pgsql/bin/pg_...原创 2018-06-14 11:11:42 · 988 阅读 · 0 评论 -
libpq PQpingParams PQconnectdbParams 示例
#include <stdio.h>#include <stdlib.h>#include <string.h>#include &l原创 2018-10-25 16:01:49 · 1149 阅读 · 0 评论 -
一道看似简单的SQL题目
网友提出的问题.一个表有3列(id name age)我相求age一样情况下,id不一样的。原始数据如下:1 x 102 y 113 x 102 x 115 z 11要达到以下效果:1 x 103 x 105 z 11标准sql实际如下,适用于所有数据库,并且少量数据的情况.海量数据则需结合数据库特性实现.SET client_encoding = 'UTF8';...原创 2018-10-24 09:18:54 · 225 阅读 · 0 评论 -
PostgreSQL数据类型之money和int64
注意使用的PostgreSQL版本为11货币用什么以下什么类型存储:numericdecimalbigintmoney还有选择困难症吗?现在可以明确的告诉大家选择bigint或money,因为它们在数据库内部是一模一样的.区别只是money在输出时根据区域自动格式化为所在区域的货币字符串1 可变精度类型可变精度类型,性能较差,如果没有特殊需求,建议不要再使用.**可变精度类型...原创 2018-11-09 22:59:41 · 5623 阅读 · 0 评论 -
编写sql语句小技巧
1 为字段多的表编写select、insert、update语句示例表create table history.enterprises( objectid bigint not null, name text not null, bank text, registered text, number text, address text, post text, legal te...原创 2019-03-25 11:58:58 · 789 阅读 · 0 评论 -
PostgreSQL Autovacuum基础知识
原文,本文结合原文和博主经验编写,阅读时间约20分钟,如有错误请指正.1 基础知识重点:如果您的数据库运行了很久,并且从来没有打开过autovacuum,那么请在打开autovacuum之前全库手动运行vacuum analyze(可能要非常久的时间)完全禁用autovacuum,请不要这样做,除非你真的知道你在做什么,并且需要定期清理脚本.否则当问题发生时你将不得不处理花费大量的时间处理...原创 2018-12-11 13:22:22 · 9258 阅读 · 0 评论 -
PostgreSQL to_char 数据类型格式化函数
帮助文档1 需求整数格式化为字符串时,不足的位数需要左补零select format('%s°%s′%s″', to_char(98,'000'), --度.规范要求3位,不足左补0 to_char(55,'00'), --分.规范要求2位,不足左补0 to_char(12,'00') --秒.规范要求2位,不足左补0);/* 输出,默认格式化前都会有个空格 098° 55′...原创 2018-12-26 18:13:48 · 17724 阅读 · 0 评论 -
PostgreSL json_populate_record和json_populate_recordset 函数
官方示例是这样的select * from json_populate_record(null::myrowtype, '{"a": 1, "b": ["2", "a b"], "c": {"d": 4, "e": "a b c&q原创 2018-12-05 16:56:23 · 1906 阅读 · 6 评论 -
PostgreSQL ISO 8601
国际标准化组织的国际标准ISO 8601是日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》。目前最新为第三版ISO8601:2004,第一版为ISO8601:1988,第二版为ISO8601:2000。(摘自百度百科)select cast('2018-08-05T11:00:00Z' as timestamp), --标准时间 cast('2018-08-0...原创 2018-12-05 16:11:22 · 778 阅读 · 0 评论 -
gservice大规模测试
gservice大规模测试测试环境 服务器1台: cpu: 2 * Intel® Xeon® CPU E5530 @ 2.40GHz memory:32GB PostgreSQL 10.4 x16 操作系统:ubuntu 16.04 server普通计算机3台:windows 10 x64 ,windows 2008 x64 100MB局域网 1 导入测试数据测...原创 2018-11-30 14:52:47 · 625 阅读 · 0 评论 -
pg_advisory_lock 正确使用方法
pg_advisory_lock和pg_advisory_unlock是配对使用的,但是如果之间的部分出现异常时,可能会导致不能正确的调用pg_advisory_unlock.例如:create or replace function test_insert_advisory(integer) returns integeras $$ declare begin perform p...原创 2018-11-29 10:41:14 · 2537 阅读 · 0 评论 -
PostGIS结合qgis调试
使用PostGIS时由于无法以图形化的方式显示结果,有些同学可能不好理解或无法理解.针对上述问题可以安装开源免费的qgis软件,安装成功后只要设置几个步骤即可以图形化的方式显示PostGIS的结果.1 配置PostGIS连接信息安装完成后,在左侧面板选择"PostGIS",如下图:然后鼠标右键在弹出菜单中选择"New Connection"打开连接配置对话框,如下图:配置并设置好你的...原创 2018-11-19 16:24:54 · 1136 阅读 · 0 评论 -
double 类型对字节进行高低位变换(本机字节转换为网络字节)
#include <stdio.h>#include <stdlib.h>#include <stdint.h>#define UINT64CONST(x) ((uint64_t)x)//打印内存中的值static void print_hex(const uint8_t *bin_data, int32_t bin_memlen) { int3...原创 2018-11-19 15:53:13 · 1807 阅读 · 0 评论 -
PostgreSQL 如何将单行扩充至多行
1 数据表2 转换为多行select unnest(array[code::text,val::text,py2[1]::text]) as f1 from pinyins原创 2018-11-15 11:18:00 · 584 阅读 · 0 评论 -
C语言高精度计时-摘自PostgreSQL源码
摘自PostgreSQL 11源码src/include/portability/instr_time.h.linux不用做任何修改可在C/C++程序中直接使用.windows 需要在在instr_time.h第207行后添加windows头文件#include <windows.h>,同时需要定义宏WIN32.使用方法#include <stdio.h>#i...原创 2018-11-02 23:41:07 · 596 阅读 · 0 评论 -
详解 PostgreSQL explain 查询计划
除第一行以外每个-&amp;amp;amp;amp;gt;表示一个子动作执行计划的阅读顺序都是从后至前width=0是表示只获取行的位置,没有读取数据.开始读数据后width肯定大于0EXPLAIN用于理解和优化SQL查询,它接受SELECT …,UPDATE …或DELETE …之类的sql命令并返回查询计划,查询计划详细说明了执行sql所采取的方法. 以下结合实例讲解一个执行计划:EXPLAIN ANALY...原创 2018-06-21 15:49:57 · 18831 阅读 · 4 评论 -
PostgreSQL 儒略历学习资料
参考资料 Julian day number pg source cdoe “src\backend\utils\adt\datetime.c”(317,1)PostgreSQL Timestamp通过C函数转换为DateDatum to_date1(PG_FUNCTION_ARGS) { Timestamp timestamp = PG_GETARG_TIMESTAM...原创 2018-06-13 15:52:18 · 476 阅读 · 0 评论 -
pg常用工具使用帮助-献给不看帮助的人
1 帮助用法: pg_dump [选项]... [数据库名字]一般选项: -f, --file=FILENAME 输出文件或目录名 -F, --format=c|d|t|p 输出文件格式 (定制, 目录, tar) 明文 (默认值)) -j, --jobs=NUM ...原创 2018-06-06 14:43:53 · 6363 阅读 · 0 评论 -
postgresql 设置执行命令超时时间
通过设置statement_timeout参数设置命令最大执行时间,单位为毫秒,超过时间将取消执行.1. 配置文件 设置.在postgresql.conf中配置statement_timeout参数(单位为毫秒),会影响所有会话,不建议使用.2.在当前会话中设置仅对当前会话生效(单位为毫秒)set statement_timeout to 30000;3.Npgsql通过连...原创 2018-01-31 17:42:36 · 22404 阅读 · 0 评论 -
PostgreSQL 正则表达式替换-使用变量
把AAAA替换为A-A-A-A- javascriptalert('AAAA'.replace(/([A]{1})/g,&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;$1-&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a原创 2018-01-15 14:46:00 · 25900 阅读 · 9 评论 -
PostgreSQL PostGIS pgrouting 泰国(thailand)全国路网分析(3)路网分析
在之前的二节中,我们已经准备好数据,现在可以进行路网分析了。 需要注意sroads_vertices_pgr图层保存的是道路交叉点id和几何对象。sroads中的source,target字段值来自sroads_vertices_pgr.id,在执行pgr_createTopology时生成。 要进行路网查询,首先要根据起点或终点空间位置获取相应的source和target。1.缓冲区查询查找半原创 2017-12-29 12:09:34 · 2407 阅读 · 21 评论 -
PostgreSQL-模糊查询
!/bin/bash1 模糊查询时,大多数情况下首先想到的是like ‘%关键字%’或基于gin索引的正则表达式,gin至少需要三个字符才会使用索引,对于汉语来说十分不方便;2 在海量数据的情况下,基于like和gin索引的正则表达式均不理想时,一般采用分词后进行查询.3 分词存在两个弊端3.1 词库的维护是比较繁重的工作.当词库中没有的关键词会导致查询结果不正确.3.2 历史数据的维护工作不好处理原创 2017-11-17 23:21:26 · 14186 阅读 · 2 评论 -
PostgreSQL PostGIS pgrouting 泰国(thailand)全国路网分析(2)入库的数据处理
在《PostgreSQL PostGIS pgrouting 泰国(thailand)全国路网分析(1)数据准备》一节中,我们已经处理好数据,现在开始入库并在数据库中处理数据入库的路网数据。 处理好的从第一章3.3节或这里下载。1.导入处理好的路网shp2pgsql -s 4326 -c -g the_geom -I -W "UTF-8" "/home/kmcb/shp/sroads.shp" p原创 2017-12-19 12:19:50 · 2633 阅读 · 4 评论 -
PostgreSQL PostGIS pgrouting 泰国(thailand)全国路网分析(1)数据准备
部分图片源自网络,如有侵权,请与作者联系删除侵权的图片。 因水平有限,如有错漏,请联系作者修改,email:81855841@qq.com。1 数据准备1.1 从OSM下载泰国(thailand)SHP数据 https://www.openstreetmap.org1.2 点击”导出按钮”选择从”Geofabrik 下载”->”Asia”->”Thailand”->”thailand-lates原创 2017-12-14 18:16:09 · 3491 阅读 · 5 评论