postgre
那人就是微臣
这个作者很懒,什么都没留下…
展开
-
postgresql如何查询物化视图脚本内容
物化视图原创 2022-02-11 17:34:40 · 1267 阅读 · 0 评论 -
postgresql 执行存储过程发生异常或意外时如何处理
——问题在oracle中存储过程可随时commit,但是postgresql中不能随时commit,无法控制执行存储过程,如果发生意外事故或是异常情况,中断了存储过程,则在postgresql中会全部回滚——解决在数据量大情况下,循环游标控制数量,每次循环3000条数据,commit;至少保证了每循环一次有3000条数据入库,而不是全部回滚;do $$declare --count_num integer; cur_point refcursor; count_num原创 2020-09-30 15:28:11 · 3929 阅读 · 0 评论 -
linux下安装python3.7.3模块psycopg2
无法连接外网,不能使用yum,pip等安装的postgresql版本是12.2下载psycopg2-2.8.6.tar.gz和postgresql12-devel-12.2-2PGDG.rhel6.x86_64.rpm安装依赖库:[root@zhyx15233 python3]# rpm -ivh postgresql12-devel-12.2-2PGDG.rhel6.x86_64.rpm --nodeps --force解压psycopg2-2.8.6.tar.gz及安装[root@zhyx原创 2020-09-25 11:11:01 · 1347 阅读 · 0 评论 -
postgresql中根据唯一索引实现更新或新增
postgresql提供的方法:ON CONFLICT DO UPDATE保证一个原子的 INSERT或者 UPDATE结果。在没有无关错误的前提下,这两种 结果之一可以得到保证,即使在很高的并发度也能保证。这也可以被称作UPSERT — “UPDATE 或 INSERT”。但是这个方法和oracle中merge into 的方法差异较大,只能单条数据更新或新增,且需要建主键,一般情况下入库的表不建议建主键,故用do$$代码块实现更新或新增的需要do$$ declare原创 2020-09-17 18:14:38 · 1201 阅读 · 0 评论 -
在shell脚本中调用postgres pl/pgsql代码块
直接在shell脚本中调用,穿插调用存储过程,正常sql及do$$代码块echo "BEGINNING OF $0 `date +'%Y-%m-%d %H:%M:%S'`"echo "plpgsql running"psql -h ${POSTGIS_IP} -U ${PGUSER} -d ${POSTGIS_DB_NAME} <<EOFCALL public.pp();CALL public.cc();update aa set bb=1;do \$$ declare原创 2020-09-16 18:33:11 · 2452 阅读 · 1 评论 -
postgresql12.2安装pldbgapi插件
调试需要安装插件下载pldebugger安装包: 1、安装git$ yum install git2、进入数据库安装目录/app/software/postgre/postgresql-12.2/contrib$ git clone git://git.postgresql.org/git/pldebugger.git3、进入pldebuggercd pldebugger4、编译安装make USE_PGXS=1make USE_PGXS=1 install5、修改配置cd /a原创 2020-08-28 10:14:06 · 2171 阅读 · 0 评论 -
linux安装postgresql12.2
参考:https://www.cnblogs.com/acker-ploy/p/11978953.html说明很详细;在安装过程中做个补充:1、安装完成,但是远程访问出现地址无法访问的问题修改postgresql.conf配置参数 listen_addresses 时考虑是否会有远程访问数据库的需求,如无,设置成 本服务器地址需要远程访问数据库,设置为listen_addresses =’*’还需要修改data/pg_hba.conf对网段的限制,或者无限制在已经启动数据库的情况下,需要原创 2020-08-27 16:12:21 · 580 阅读 · 0 评论 -
postgre更新表中所有字段中只为NULL的数据
在postgre中空字符串与null是不同的,所以不能用replace来替换for循环打印void类型数据及更新操作DO $$DECLARE r record;BEGIN FOR r IN SELECT column_name from information_schema.columnswhere table_schema='public' and table_name='ods_card_d' and data_type='character varying' LOOP raise原创 2020-08-20 16:11:21 · 1290 阅读 · 0 评论 -
postgre 更新时子查询返回多行随机取一条
port表中有多条相同的rack值update card aset port=(select b.devicefrom port bwhere a.rack = b.rackand b.day_no = current_datelimit 1)where a.day_no=current_date原创 2020-08-19 14:17:21 · 515 阅读 · 0 评论