9.5 版的 PostgreSQL 增加了 UPSERT 命令(插入时出现冲突时就改为更新,很实用)、行级安全控制和针对大数据内容进行了诸多索引、排序、外部引用等优化。 官方的更新说明(英文) 详细的更新说明(英文)
分类: PostgreSQL
[技巧] Pg2MSSQL数据同步工具简介
Pg2MSSQL是swish群主开发的一个可以同步PostgreSQL、MSSQL的工具软件,使用了我们熟悉的QWorker作为引擎,可以高效的并发执行数据库同步任务。 您可以到QDAC官方群或者本站下载页面找到Pg2MSSQL的下载地址,并免费使用部分功能。如果您觉得好用,可以和swish联系购买注册码。详细的注册信
[PostgreSQL] – 服务器端通知
PostgreSQL 支持从服务器端向客户端主动推送通知信息,前提是客户端监听指定名称的通知。这样做的好处是客户端可以监测服务器端的数据改变,以便更新本地的数据等行为,尤其是适合字典类型的数据及时更新。 首先,客户端使用 Listen 指令来通知服务器自己要监听的通知的名称。然后一旦有人触发了这个通知(如果触发是在事务
PostgreSQL创建分区编写过程小结
这是一个实例,我要对一个数据库表的数据创建一个统计缓存,这个统计缓存由于数据量较大,我采用了按年分布表的方式。首先设计了基表,所有的数据分区都是基于这个基表继承而来。为了方便分区和维护,我专门写了一个函数来创建分区子表。 create or replace function stat_partition(stat_ye
[协议]常用数据库直接协议(MSSQL、PostgreSQL、Oracle、MySQL)
竟然公开了,不易呀。既然微软好不容易这么大方一会,回头QDAC考虑加上对TDS协议的支持。 目前搜集到的直接连接协议,将来QDAC中的QDB可以直拨这些协议的规范,直接通过Socket连接到服务器,然后与数据集对象交互: 【PostgreSQL】 类型:官方正式文档 地址:http://www.postgresql.o
[PostgreSQL]全角和半角字符转换函数
我们知道,客户许多时候录入数据时,并不注意输入法是否是全角模式,然后就造成输入的内容,有的是全角有的是半角,造成我们做分析统计时的不便,为此,编写相应的函数。当然这个过程应尽量在前台完成,但如果针对已经存在的数据,下面提供的两个函数就比较方便了。 1、全角转换为半角函数 –© 2014,swish,原版首发:http
[PostgreSQL]获取汉字拼音首字母函数
在度娘无语,谷哥失聪的情况下,不得已将自己原来写的一个获取汉字首字母的C++源码转换为了PostgreSQL(为什么要获取汉字首字母?苍天呀大地,自己想想去吧),在PostgreSQL 9.3中测试没有问题,数据库使用的是UTF-8编码。在这里分享出来,供大家参考: –© 2014,swish,原版首发:https:
QTimeTypes α1版发布-用于支持时间戳类型和时间间隔类型
QTimeTypes单元是QDB下面的一个单元,它用于支持两种时间类型:时间戳和时间间隔。这个单元现在是第一个测试版本,测试的Demo已经上传到群共享,欢迎大家测试。 时间间隔可以与日期时间类型或时间戳类型直接进行加减运算,同时,支持PostgreSQL、Oracle、ISO8601/GB7504、SQL标准四种格式的
QDB中Interval类型详解
在PostgreSQL和Oracle中,有一个数据类型叫作Interval,我称之为时间间隔类型,用于表达一段时间间隔。ISO8601及等价的GBT 7408-2005版也规定了标准的时间间隔类型的格式。在QDB中,我们加入了一个称为TQSQLInterval的类型来描述这个值,结合它及PostgreSQL、Oracl
绿色版PG安装的批处理
1、不注册成服务,用的时候直接打开(命令行窗口不能关闭) @ECHO OFF IF NOT EXIST %cd%\bin GOTO Error IF NOT EXIST %cd%\lib GOTO Error IF NOT EXIST %cd%\share GOTO Error IF NOT EXIST %cd%\St
Oracle和PostgreSQL中时间间隔类型(Interval)表达式
Oracle和PostgreSQL都支持一种叫作Interval的时间间隔类型,据有关资料显示,它是SQL-92标准的一种规范类型,但实际支持的数据库并不算多。 Oracle中关于Interval类型的说明: http://docs.oracle.com/cd/B19306_01/server.102/b14200/s
PostgreSQL函数-取指定月份的起始与截止日期
取月份的起始日期很容易: date_trunc(‘month’,该月中的某一天) 取月份中的结束日期(实际上是下个月的1号0点) date_trunc(‘month’,该月中的某一天)+’1month’::interval 如果不想取下个月1号的0点,就再减去1天就好了。 date_trunc(‘month’,该月中的
QScript将来可能用到的东西笔记
如果一个函数的返回值是固定的,那么我们可以将多次重复调用合并为一次,然后用一个常量代替。 这是编译器的一个常规优化技巧,做脚本解释器的话,也应该考虑到,以便提高运行效率。
PostgreSQL函数-取指定日期所隶属季度的起始日期
一句代码,ADate为指定的日期,AQuarterStart为返回的季度起始日期 AQuarterStart=date_trunc(‘quarter’,ADate);
PostgreSQL的date_part/extract函数
PostgreSQL可以使用datepart/Extract从日期时间类型中抽取部分内容,帮助内容如下: EXTRACT(fieldFROMsource) extract函数从日期/时间数值里抽取子域,比如年、小时等。 source必须是一个 typetimestamp,time,interval类型的值 表达式(类型
从数据库里随机选择一行
说起来觉得很复杂,实际上很简单,对于有主键的数据库,如果值是整数,则那随便生成一个随机数,是最大值和最小值之间的一个值,然后取大于随机数的一个第记录就可以。如果没有别的方式,可以按随机数排序,如下: select top 1 * from 表名 order by random() 或 select * from 表名
PostgreSQL 十六进制转为整数函数
PostgreSQL有整数转为字符串的函数to_hex,但却没有提供反过来的函数,因为要用到,写了一个与大家分享。 create or replace function hex_to_int(s character varying) returns bigint as $$ declare retval bigint;
PostgreSQL-计算指定时间所在周的开始与结束日期
有时候,我们知道一周的某一天,但需要这周起始是那一天,结束是那一天。在PostgreSQL及绝大多数语言中,都没有提供这么一个函数,也许是用的人少吧,毕竟一般的统计报表都是日报、月报、季报或年报,周报相对较少。 我写了两个计算指定日期所在周的开始和结束日期的函数,分享给大家。 1、WeekSta
PostgreSQL中错误返回的信息内容
PostgreSQL在客户端出错时,服务器端返回了丰富的错误信息,当然最终返回到上层的只是一部分。参考Pg的文档,出现在 ErrorResponse 和 NoticeResponse 消息里由多个字段构成。 每个字段类型有一个单字节标识记号。请注意,任意给定的字段类型在每条消息里都应该最多出现一次。 S 严重性
PostgreSQL MD5 加密验证算法分析
因为QDAC 3.0里,PostgreSQL不打算继续带一大堆动态链接库,所以驱动打算直接写。开源的好处就是可以拿到源码来分析,然后写出自己的实现。 我们首先来看PostgreSQL的登录过程(非SSL方式): 1、发送初始化数据包,告诉服务器我们是谁,要连那个数据库及一些额外的参数。