- 博客(194)
- 资源 (7)
- 收藏
- 关注
原创 GeoScenePro编辑达梦数据库自定义坐标参考数据流程
GeoScenePro5.1之前的版本不支持直接编辑达梦的数据,需要将图层发布到GeoSceneServer后,编辑发布好的FeatureService。5. 使用GeoScenePro创建一个QueryLayer,并将其发布成服务(选择支持Feature Access)4. 插入一条记录(GeoScenePro使用第一条记录判断类型)6. 将发布的服务,添加到GeoScenePro编辑即可。3. 创建空间表(SRID=custom srid)1. 使用SYSDBA用户执行。2. 添加自定义参考。
2026-02-04 09:04:13
106
原创 PostGIS Geometry类型测试
最后一个参数为use_typmod代表是否使用typmod来记录上面三个信息,如果不用typmod记录,则使用constraint进行约束,两种方法都可以做到。如果想不受最上面条件限制,可以将使用not use_typmod生成的column上constraint删除掉,这样就可以将各种类型的数据都放到表中了。geometry(PointZ,3857)是怎么打印出来的。从上面的geometry_columns返回是一样的信息。使用typmod,可以使用如下方法实现。1. 维度(是否包括M和Z)
2026-02-03 11:31:52
77
原创 PostgreSQL copy的用法
其中\copy是psql的客户端命令行,可以将表导出到本地的csv文件中,但是唯一不足的是不能跨行。copy是服务端命令,默认output出来的数据是放在服务器端目录中,可以使用如下语法放到客户端中。to stdout是将结果导入到标准输出 \g 是将标准输出重定义到文件中。如果字段数量比较多,写在一行,非常不方便,不过可以使用以下两种方法解决。第一种 可以使用视图来解决这个问题,这样一行就可以解决。第二种,使用服务器端copy命令是可以换行的。psql提供了\copy命令和copy。
2026-01-30 15:32:12
96
原创 PostgreSQL timestamp类型说明
使用\d testtbl命令显示为timestamp without time zone是因为\d元命令后台调用了format_type函数,其会将timestamp类型表示为timestamp without time zone 而已。但是PostgreSQL的类型中只有timestamp,并没有timestamp without time zone.timestamp without time zone 和timestamp 两个。今天使用dbeaver添加时间字段发现可以选择。这个两个有什么区别吗。
2026-01-28 16:20:47
297
原创 PostgreSQL 约束延迟触发
PG只支持以下几种约束延迟触发(并不是不触发,而是再事务结束的时候触发)指定INITIALLY DEFERRED。但是需要先删除掉约束,重建的时候指定。当然oracle默认就是延迟模式。当然也可以修改约束延迟模式。
2025-12-30 11:10:06
264
原创 PostgreSQL 创建扩展后台流程
执行create extension postgis函数后,后台会进入到exec_simple_query->ProcessUtility->CreateExtension函数中。具体创建过程在函数CreateExtensionInternal中完成。本文以创建postgis扩展来介绍PG后台所执行的流程。
2025-12-19 11:50:22
208
原创 PostgreSQL 逻辑复制测试
该参数默认是4, logical replication apply worker 也占用这个参数指标,系统中已经有有5个subscription,因此不够了。在pub端的日志中并不会记录类似错误,但是也可以体现在slot上,每次创建sub对象的时候,会同步创建一个slot,与sub对象同名。wal sender在正常发送数据,但是实际并没有发送给sub端,而是把数据写到了pub端的某个目录中,如下所示。sub端,apply worker也正常接收数据,但是并没有直接应用到相应的表上,而是存储到了。
2025-10-27 09:10:30
625
原创 openGauss的superuser权限
但是openGauss以及基于openGauss的库,具备su权限的只有一个,也就是初始化库的时候--username参数指定的用户,其oid固定为10。PostgreSQL的su的权限,取决于create user和alter user 的时候是否指定了superuser选项。下面是Gaussdb for openGauss的例子。初始化的bki文件内容如下。
2025-08-12 16:59:39
295
原创 windows 上编译PostgreSQL
编译前准备:Strawberry Perl //提供Perl的支持,内部还包括gccBison和Flex(不同的PG需要不通的版本,具体需要查看帮助文档)安装Bison和Flex目录不要选择默认的c:\program files,因为目录中间有空格,后续编译会报错,PG的文档中有记录,建议安装在没有空格的目录中,比如c:\GnuWin32目录中可以使用win_bison.exe和win_flex.exe。
2025-08-08 16:51:27
630
原创 PostgreSQL RelableType
如text和varchar同属于‘S'并且typisprefered='t' 因此被匹配上了。最终候选出多个满足条件的类型,比如char, name ,text类型,后续还需要根据。属于一个大类并且typispreferred为t的优先被匹配。RelableType是PG中的一个节点类型,如下所示。代码4: OpernameGetCandidates。代码5: oper_select_candidate。代码3: binary_oper_exact。这部分内容是在make_op函数中实现。
2025-08-02 10:25:22
363
原创 PostgreSQL libpq LoadBalance功能
之前由于某个项目需要lb的功能,当时PG还没有提供该功能,但是金仓的libpq提供了相应的功能,所以把产品中的libpq用金仓的替换掉实现的, 知道今天原生PostgreSQL libpq从16也支持前端lb功能,使用。注释掉load_balance_hosts,默认为disable。连个参数的帮助信息如下。
2025-07-31 14:45:47
300
原创 PostgreSQL SysCache & RelCache
根据opername从pg_operator获取记录,并放到SysCache中。代码2 CatalogCacheInitializeCache。代码4:RelationIdGetRelation。代码5: RelationBuildDesc。代码3 table_open。
2025-07-21 17:22:00
365
原创 Duckdb处理excel文件
duckdb通过xlsx扩展读写excel文件,但是不支持xls格式。将PG的数据导入到excel中, 并进行查询。使用duckdb cli工具。
2025-07-18 11:09:31
1227
原创 跨库更新ArcGIS 某个Geodatabase FeatureClass
中间机器: 转换所在机器(需要安装pg的命令行工具,尽量安装跟目标库上一致的版本,如KingbaseES V8R6 是基于PG12.1修改的,那就安装PG12版本的和ArcGIS Pro)今天不讨论使用ArcGIS的工具,比如Pro和ArcPy进行迁移,今天讨论用纯数据库命令行方法进行更新,毕竟速度快,而且方便任务化执行。目标库和源库需要对中间转换机器免密登录数据库(服务器端设置免密或者中间机器设置密码文件都可以)3 使用Pro在目标库上,导入第二部导出的xml工作空间。4. 中间机器上执行如下命令。
2025-07-12 14:16:33
338
原创 PostgreSQL投影代码分析_1
tlist_matches_tupdesc 其上层调用函数是。数据库投影的概念不在此介绍,PG中是否满足投影的函数是。
2025-07-11 15:51:52
189
原创 PostgreSQL kv(jsonb)存储
项目过程中,存储kv的时候,很多时候会选择redis进行存储,实际用PG也一样可以存储kv,而且查询速度并不慢。从测试数据上看,搜索某个key和value,几乎是毫秒级别的。下面可以看看PG存储kv以及其性能。
2025-07-07 16:37:57
357
原创 Oracle DB和PostgreSQL,OpenGauss主外键一致性的区别
在主表上的关联键上建unique索引,在建关联的时候会报错,需要建一个unique的constraint才可以,也就是说o上不认unique索引,只认constraint。PG,在主表的关联键上建unique索引或者unique的constraint都可以。有些国产数据厂商的兼容O模式也会一并跟oracle是一个行为。个人认为,PG的兼容性更好些。
2025-07-04 11:59:45
343
原创 PostgreSQL基于归档日志的持续恢复测试
1. 主库(51)设置archive_command参数,将归档日志放到138的/data174/archivedir目录中。归档路径: 192.168.100.138 /data/174/archivedir。注释掉: primary_conninfo和archive_command两个参数。3. 修改pgdata_standby的postgresql.auto.conf。增加restore_command和参数。2. 目标机器(138)制作基础备份。
2025-07-01 10:54:11
289
原创 ducklake+minio系列2
跟linux机器基本上一样,除了后面不需要添加data_path参数了,catalog已经存在了并且data_path已经存储在了,所以不需要再次指定data_path参数了。通过catalog(postgresql) + data(minio) 配置,这样通过别的机器也可以操作这个库了,这样就实现了并发访问了,如下。可以通过snapshots函数查看现有的快照,并且访问不同快照的数据。
2025-06-11 17:31:58
358
原创 ducklake+minio 系列1
1. 下载minio,启动后在控制台中创建名字为testbucket的bucket. 并在该桶中创建data_folder的目录,用来存储数据。6. 创建成功后,在postgresql 的ducklake_catalog库中创建了很多ducklake相关的catalog表,这些表就是用来管理后台数据存储中的数据,每个表具体什么作用可以查看。又增加了一个删除文件,但是新增的删除文件中的记录包括了上一次删除的记录,这主要是为了支持删除snapshot的功能,在此不在介绍。通过外部的文件创建一张表,如下。
2025-06-11 13:34:54
1241
原创 PostgreSQL(PostGIS)触发器+坐标转换案例
我测试数据为4326到3857转换,该转换为公开算法,因此可以使用postgis自带的st_transform实现,但是很多时候进行转换的都是cgcs2000到地方坐标,只有甲方有相关算法,并且再使用国产数据库的时候,st_transorm的代码在数据库厂商手中,因此需要甲方和数据库厂商配合,甲方提供转换的函数或者动态库提供给数据库厂商来修改st_transform函数。需求,只录入一份坐标参考为4326的数据,但是发布的数据要求坐标必须是3857。对这种需求可以利用数据库触发器实现数据的同步。
2025-06-04 09:18:23
602
原创 PostgreSQL ERROR: out of shared memory处理
pg_dump -d dbname的时候会对库中所有的表执行lock table in shared mode 操作。所以解决这个问题除了增加max_locks_per_xact参数的数量,增加最大连接数实际也可以。从错误字面上看是超出内存大小了,建议增加max_locks_per_transaction参数。可以看出来,跟最大连接数和max_prepared_xacts相关。使用pg_dump命令导出一个库的时候,报。该操作会将表锁记录到表锁所在的共享结构中。
2025-05-31 17:38:48
792
原创 编译pg_duckdb步骤
git submodule update --init --recursive 来下载所需要的duckdb的源码到该目录中,但是实际使用貌似不行,所以需要到github中直接下载duckdb的源码并放到third_party中。1. 要求cmake的版本要高于3.17,可以通过下载最新的cmake的程序,然后设置.bash_profile的PATH环境变量,将最新的cmake的bin目录放到PATH环境变量的最前面。注意下载解压后,里面的third_party目录是空的,本来make的时候会执行。
2025-05-27 11:41:03
591
1
原创 linux signalfd
linux从内核2.6.22开始提供了signalfd系统调用函数。该函数提供了一个与信号绑定的特殊文件符号,也就是说发送给进程的信号,可以通过该函数提供的文件符号读出来,进一步践行一切皆文件的宗旨。同时该函数可以与select,poll,epoll多多路复用函数使用对信号进行监听处理。
2025-05-26 09:37:55
382
原创 PostgreSQL 处理链接请求
PostgreSQL的后期版本(16,17)在监听客户端链接以及客户端退出部分的监听处理部分由select 函数修改成epoll函数,具体原因不在此介绍。PG14版本还使用的select。
2025-05-23 15:56:25
323
原创 PG Merge语法使用
从PostgreSQL15开始支持Merge Into语法,以前版本可以使用insert ... do conflicts语法。目标机器 100.51 PostgreSQL 17.4 (编译安装的时候需要把dblink扩展加上)源机器 100.138 PostgreSQL 11.5。数据情况如下:图层名字maincity(源和目标结构相同)2. 在目标机器上创建dblink,以方便连接到源机器。3. 把objectid小于1200的同步过来。
2025-02-27 11:19:22
505
原创 inotify-tools使用
e 指定要监视的事件,多个时间使用逗号隔开。ymd分别表示年月日,H表示小时,M表示分钟。%T 使用由–timefmt定义的时间格式。-q 减少冗余信息,只打印出需要的信息。–format 监听到的文件变化的信息。可以配合rsync实现文件的自动同步。-r 使用递归形式监视目录。–timefmt 时间格式。%w 表示发生事件的目录。%f 表示发生事件的文件。%Xe 事件以“X”分隔。%e 表示发生的事件。
2025-02-10 14:44:47
206
原创 如何通过sql修改postgis的srid
从定义中可以看出srid要不从atttypemod中获取,也就是shape定义成(geometry,4326),要不从其 constraint上获取。那geometry_columns 中的srid是从哪获取到的呢。3. 现在查询geometry_columns。发现其元数据并没有更新过来,变成0了。4. 添加constraint。1. 删除check。
2025-02-05 11:49:13
374
原创 linux下非root用户监听0-1024端口的方法
解决setcap导致Java加载libjli.so 失败问题 - chenxueqiang - 博客园
2024-12-11 13:42:15
377
原创 PostgreSQL 访问http协议数据
当然,某些操作系统已经将其内嵌到自己的按照包里了,如KingbaseV8R6。可以在PostgreSQL使用http扩展包访问http。其返回结果为http_response,其定义如下所示。当然了,可以单独把header提出来。也可以向服务器上发送数据。
2024-11-28 17:05:46
293
原创 瀚高安全版创建postgis过程
由于安全版中三权分立,sysdba,syssao,syssso 三个用户,因此创建扩展需要关闭hg_sepofpwoers参数。3. 执行 select set_secure_param('hg_sepofpowers','off');这次测试的为瀚高安全版数据库系统V4.5.8, x86_64平台,5. 执行create extension postgis;2. syssso 链接到highgo库中。1. 安装server以及postgis。
2024-03-07 09:53:24
1038
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅