
greenplum
sqlboy-yuzhenc
没有什么是sql解决不了的。
展开
-
Greenplum开发
Oracle与GreenplumGP开发规范对象数管控连接数管控建表管控查询管控简单的PSQL命令psql常用参数psql常用内部命令语法DDLDMLDCLPL/SQL和PL/PGSQL匿名程序块替代变量字符串分隔符%TYPE属性%ROWTYPE属性IF语句CASE表达式和CASE语句LOOP循环WHILE循环FOR循环CONTINUESQL游标异常处理存储过程和函数常用的数据字典表ORACLE常用数据字典表GP查询字段信息GP查询主键约束GP查询建索引语句GP查询分布键GP查询表大小GP开发规范对象数原创 2021-11-29 18:52:52 · 3628 阅读 · 2 评论 -
postgresql 实现变量替换框架
postgresql 变量替换框架实现原创 2022-08-31 16:23:08 · 660 阅读 · 1 评论 -
GreenPlum 实现伪自治事务
gp实现自治事务dblink让存储过程里的错误日志记录成为可能原创 2022-08-02 15:35:21 · 275 阅读 · 0 评论 -
postgresql的普通字符串和转义字符串
E''转义字符串原创 2022-07-27 11:14:11 · 2613 阅读 · 0 评论 -
GreenPlum 函数实现多规则替换
多规则替换应用场景函数实现二维数组的初始化实现批量替换测试测试用例1测试用例2应用场景对一个字符串,想做如下替换:a替换成1,b替换成2,c替换成3等等,有多少个这样的替换规则,我们就需要用replace嵌套多少层;把字符串中的替代变量替换成指定的值;函数实现二维数组的初始化由于plpgsql中的数组不是在声明的时候分配内存,而是在第一次初始化之后分配内存并确定了数组的大小,所以写了一个函数来初始化指定text类型的二维数组;create or replace function array原创 2022-04-23 22:32:18 · 970 阅读 · 0 评论 -
GreenPlum和Oracle where执行顺序
where执行顺序GreenPlum样例准备测试用例1测试用例2Oracle样例准备测试用例1测试用例2结论GreenPlumOracleGreenPlum样例准备create or replace function test_1() returns varchar language plpgsqlas $function$ begin raise notice '1'; return '1';end;$function$;create or replace function原创 2022-04-23 21:28:57 · 913 阅读 · 0 评论 -
GreenPlum 递归查询
应用场景drop table if exists tmp;create table tmp as select '张三' name,to_date('20220401','yyyymmdd') updatedateunion allselect '张三' name,to_date('20220405','yyyymmdd') updatedateunion allselect '李四' name,to_date('20220228','yyyymmdd') updatedateunion a原创 2022-04-14 22:24:30 · 675 阅读 · 0 评论 -
GreenPlum 数据核对
create or replace function sp_tbcompare(tablea character varying, tableb character varying, prikey character varying default null::character varying) returns void language plpgsqlas $function$/* 作者 : v-yuzhenc * 功能 : 比较2个表之间的数据差异,只会比较这2个表同名的字段, * 若原创 2022-04-13 21:51:35 · 342 阅读 · 0 评论 -
GreenPlum 触发执行vacuum
目录场景描述touch_vacuum_table_recordwait_touch_vacuum_table_recordreq_touchid_vacuumhastableinsert_touch_vacuum_table_recordsp_vacuumvacuum_analyze_tb.sh配置定时调度场景描述问题:GreenPlum中,vacuum只能自己管理自己的表,并且不能在函数或者匿名程序块中动态进行vacuum思路:设计一个触发表,将需要做vacuum的表名插入到该触发表中,在linu原创 2022-04-13 21:40:30 · 543 阅读 · 0 评论 -
GreenPlum 行列权限控制
准备drop table if exists salary;create table salary ( id int --唯一标识 ,name varchar(100) --姓名 ,amount numeric --工资 ,users varchar --数据库用户) distributed by (id);insert into salary values (1,'张三',5000,'tjbb1'), (2,'李四',6000,'tjbb2');行级权限控制希望张原创 2022-04-13 21:05:25 · 900 阅读 · 0 评论 -
GreenPlum 检测dml是否能正常执行
create or replace function check_dml(check_dml character varying, check_user character varying default ("current_user"())::character varying(64)) returns boolean language plpgsqlas $function$/* 功能 : 检测单条dml语句在某个用户的环境下是否能正常执行,该函数实际不会执行,只做检测 * check_dml原创 2022-04-10 16:06:13 · 363 阅读 · 0 评论 -
GreenPlum etl空字符串处理
应用场景Oracle的varchar2类型怼varchar类型进行了优化,把空字符串当成null处理,即空字符串等价于null;但是在GreenPlum中,空字符串与null不等价;所以,需要把所有的空字符串转换成null。replace_to_null功能:扫描指定表的所有varchar和text类型的字段,将字段值为’'替换成nullcreate or replace function replace_to_null(tablename character varying, schemana原创 2022-04-10 15:43:44 · 1098 阅读 · 0 评论 -
GreenPlum 获取建表语句函数实现
array_position返回数组指定元素所在的位置,未匹配到返回0create or replace function array_position(arrayint integer[], elementint integer, times integer default 1) returns integer language plpgsqlas $function$/* 作者 : v-yuzhenc * 功能 : 返回数组指定元素所在的位置,未匹配到返回0 * arrayint :原创 2022-04-10 11:45:40 · 2024 阅读 · 0 评论 -
输出日历(Greenplum、Oracle、Java)
GPdo $$declare --指定日期 p_date date := to_date('20221028','yyyymmdd'); --指定日期所在月的天数 days int := cast(to_char(to_date(to_char(p_date + interval '1 month','yyyymm')||'01','yyyymmdd') - 1,'dd') as int); p_count int := 1; --指定月1号星期几 p_week int := cast原创 2022-01-07 00:28:25 · 1000 阅读 · 0 评论 -
GreenPlum 默认权限修改
修改默认权限GP中的表默认是只有表的拥有者有表的所有权限,其他人没有任何权限。一般情况下,建成表后,需要默认公开表的select权限,这时我们可以更改表的默认权限;--比如对于tjbb1下的表alter default privileges for role tjbb1 grant select on tables to public;--或者直接对修改schema默认权限alter default privileges in schema tjbb1 grant select on tables原创 2021-12-15 16:27:09 · 878 阅读 · 0 评论 -
GreenPlum 用户权限管理
--创建用户tjbb1授权登录并设置密码,限制连接数8个create role tjbb1 with login password 'Aa123456' connection limit 8;--将tjbb1添加到tjbb用户组中alter group tjbb add user tjbb1;--创建tjbb1的schema(工作空间)create schema tjbb1;--将tjbb1的schema的usage和create权限授权给tjbb1grant usage,create on原创 2021-12-14 17:46:23 · 2106 阅读 · 0 评论 -
Oracle迁移Greenplum
原理sqluldr2快速导出oracle数据到操作系统文件,gpload并行装载操作系统文件到gp;创建用户gpload[root@etl local]# groupadd gpload[root@etl local]# useradd gpload -g gpload[root@etl local]# passwd gpload[root@etl local]# su - gpload安装oracle客户端linux(CentOS7.6)安装ORACLE客户端sqluldr2安装原创 2021-12-03 16:56:01 · 874 阅读 · 0 评论 -
Linux(Centos7.6)安装Greenplum客户端
下载客户端Greenplum客户端官方下载地址rpm安装[root@etl gpload]# rpm -ivh greenplum-db-clients-6.10.0-rhel7-x86_64.rpm配置环境变量[gpload@etl ~]$ vi .bashrc ##增加source /usr/local/greenplum-db-clients/greenplum_loaders_path.sh[gpload@etl ~]$ source .bashrc测试[gpload@e原创 2021-12-03 14:17:35 · 2092 阅读 · 0 评论 -
Greenplum6安装GPCC6.6
安装准备(所有节点)GPCC官方安装文档GPCC官方下载地址#所有节点的gpadmin要有/usr/local/的读写权限[gpadmin@master ~]$chmod 777 /usr/local/#环境变量配置[gpadmin@master ~]$ vi ~/.bash_profile source /usr/local/greenplum-db-6.10.0/greenplum_path.shexport MASTER_DATA_DIRECTORY=/data/gpdata/原创 2021-12-02 16:33:56 · 789 阅读 · 0 评论 -
GreenPlum 索引问题
问题描述项目中使用GP数据库做实时同步,对于这种高并发大数据量的dml操作,效率非常低,于是,考虑到索引优化。有时候,已经建了索引,但是看查询计划,并没有使用到索引;案例对于odb_ywuser_prpcmain这张表,policyno为分布键。在列 policyno 建了一个名叫 idx_db_ods_odb_ywuser_prpcmain 的索引,在列 policyno,inserttime 上将建了一个名叫 idx_db_ods_odb_ywuser_prpcmain2 的索引;create原创 2021-11-15 11:01:29 · 1509 阅读 · 0 评论 -
Greenplum中的时间current_timestamp、now()和clock_timestamp()
同一个事务内的当前时间相同:current_timestamp、now();在事务中随时间的前进而变化:clock_timestamp();do $$begin raise notice 'current_timestamp1:%',current_timestamp; raise notice 'clock_timestamp1:%',clock_timestamp(); raise notice 'now1:%',now(); perform pg_sleep(2); raise not原创 2021-11-08 10:03:21 · 1370 阅读 · 0 评论 -
Geenplum : Using too many subtransactions in one transaction
问题描述greenplum做update时提示Using too many subtransactions in one transactionWARNING: Using too many subtransactions in one transaction. (seg2 10.75.2.146:40002 pid=343024)HINT: Close open transactions soon to avoid wraparound problems.CONTEXT: PL/pgSQL原创 2021-11-02 14:27:13 · 372 阅读 · 0 评论 -
greenplum定期维护脚本
[gpload@mydb ~]$ crontab -e*/30 * * * * export PGPASSWORD=Aa123456;echo "select pg_terminate_backend(pid) from pg_stat_activity WHERE (usename like 'tjbb%' or usename like 'dba_%' escape 'a') and (date_part ('day',current_timestamp-backend_start)*24*60+da原创 2021-10-12 15:58:31 · 289 阅读 · 0 评论 -
Greenplum创建外部表权限
alter role db_ods with createexttable;原创 2021-09-17 16:08:52 · 821 阅读 · 0 评论 -
mysql和oracle迁移greenplum
mysql表结构迁移先查询mysql中需要迁移表所涉及的所有字段类型;--查询tjbb模式下所有表的所有字段类型select distinct data_type from information_schema.columns where table_schema = 'tjbb';查询mysql与postgresql字段类型映射关系;Mysql :: MySQL Workbench Manual :: 10.6.4 PostgreSQL Type Mapping拼接原创 2021-08-20 18:30:36 · 441 阅读 · 0 评论 -
GreenPlum 函数的定义者权限实现动态sql
应用场景很多时候,需要批量对每个模式下的对象进行处理,其中一个办法就是通过登录每个用户去操作对应的模式,这样工作量太大。可以写一个动态执行sql框架,在不切换用户的情况下,以目标用户的环境去执行sql操作,这就需要用到函数(存储过程)的定义者权限。所谓函数的定义者权限,即以创建函数的用户环境去执行函数。在oracle中,存储过程默认是定义为定义者权限,但是在greenplum中,函数默认是定义为调用者权限(即以调用者的环境执行函数);动态执行sql在每个用户对应的schema下面建立 sp_exec原创 2021-08-12 10:22:58 · 680 阅读 · 0 评论 -
greenplum6数据字典表
指定表找列信息select b.nspname 模式名, a.relname 表名, c.attname 字段名, d.typname 字段类型, case when decode(d.typtype, 'd', d.typtypmod::varchar, c.atttypmod::varchar)::int4 = -1 then null when decode(d.typtype, 'd', d.typbasetype::varchar, c.atttypid::varchar)::原创 2021-08-11 10:07:12 · 381 阅读 · 0 评论 -
postgresql实现oracle的regexp_like函数
create or replace function regexp_like(str character varying,reg character varying) returns boolean language plpgsql as $function$ declare v_match text;begin select regexp_matches(str, reg) into v_match; if v_match is not null then retur原创 2021-06-28 11:29:01 · 2281 阅读 · 3 评论 -
postgresql字符串转数字
规则若字符串全是数字,则返回该数字值;若字符串不全是数字,则返回空;postgresql函数实现CREATE OR REPLACE FUNCTION isnumeric(str character varying) RETURNS numeric LANGUAGE plpgsqlAS $function$ declarep_str numeric;begin p_str := cast($1 as numeric); return p_str; exception原创 2021-06-28 11:16:33 · 8929 阅读 · 0 评论 -
postgresql客户名称脱敏
脱敏规则1个字符,不脱敏;2个字符,后一个字符脱敏;3个字符,中间一个字符脱敏;4个字符,中间两个字符脱敏;超过4个字符,认为是政企客户,不做脱敏处理;postgresql函数实现CREATE OR REPLACE FUNCTION f_59791_tm(str character varying) RETURNS character varying LANGUAGE plpgsqlAS $function$ declare num numeric := length($1);原创 2021-06-28 11:07:52 · 1628 阅读 · 0 评论 -
postgresql获取指定日期所在星期的星期几所在的日期
postgresql返回指定日期所在星期的星期几所在的日期原创 2021-06-28 10:58:17 · 1968 阅读 · 0 评论 -
greenplum锁表处理
查询因为锁表而等待的语句----因为锁表而等待的语句select *from pg_stat_activitywhere waiting_reason = 'lock' --and datname='apldb';锁表查询--锁表查询select distinct b.pidfrom pg_class a, pg_locks bwhere a.oid = b.relation --and a.relname='table_name';锁表处理--锁表处理se原创 2021-06-28 10:42:38 · 1207 阅读 · 0 评论 -
oracle和pg行列转换
【代码】oracle和pg行列转换。原创 2021-06-18 15:02:01 · 3149 阅读 · 0 评论 -
Ora2pg安装与使用
目录安装oracle客户端安装依赖在root下配置环境变量安装 DBD-Oracleora2pg安装检查是否安装成功配置配置文件oracle导表gp创建测试表导出ORACLE表结构和数据将导出的表结构和数据导入GP参考文章安装oracle客户端在gp数据库的master节点安装oracle客户端,安装过程如下。linux(CentOS7.6)安装ORACLE客户端安装依赖[root@mdw admin]# yum install perl-DBI perl-DBD-Pg perl-ExtUti原创 2021-02-27 19:18:40 · 1599 阅读 · 0 评论 -
greenplum的主机名更改导致无法启动问题解决
查看报错日志[gpadmin@mydb_master ~]$ cat /home/gpadmin/gpAdminLogs/gpstart_20210224.log20210224:18:27:05:007350 gpstart:mydb_master:gpadmin-[INFO]:-----------------------------------------------------20210224:18:27:05:007350 gpstart:mydb_master:gpadmin-[INFO原创 2021-02-24 19:13:42 · 835 阅读 · 0 评论 -
(VMware)Centos7.6安装greenplum6
Centos7.6安装greenplum6安装准备VMware安装Centos7.6安装准备VMware安装Centos7.6Centos7.6:https://pan.baidu.com/s/19V6M9LFiSBqC5lE30HnXWw提取码:yb5t原创 2021-02-18 17:33:22 · 594 阅读 · 4 评论