数仓建设之Oracle常见语法学习

1. 字符串截取

select substr('AAA-BBB', 1, instr('AAA-BBB', '-', -1) - 1)from dual; --AAA
select substr('AAA-BBB', instr('AAA-BBB', '-', -1) + 1)from dual; --BBB

2. 帆软报表有参数SQL

select a.agency_code, a.agency_name, a.agency_type
  from dw.dim_ta_subred_agency_info a
 where 1 = 1
     ${if(len(agency_code)==0,"","and a.agency_code in ('"+ agency_code +"')")}
 order by 1

3. oracle导出dmp文件

exp funddc/Jpmam_240416@ETL51New file="D:\dmp\temp_cube_trade_info_20240702.dmp" tables=(temp_cube_trade_info_20240702)
--oracle导入dmp文件 导入的时候会自己创建表
--full=y:代表将dmp文件中的所有数据都进行导入;
--ignore=y:默认为n,当不加这个参数时,导入的表或视图如果在原有表中本来就存在就无法导入这些数据,加上以后就会直接覆盖这些数据。
imp dc_ctl/dc_ctl@etltdb file="D:\dmp\temp_cube_trade_info_20240702.dmp" full=y ignore=y 

4.oracle中表的数据转化成xml文件导出

--步骤1:编写hrxml.sql 脚本文件
conn hr/hr
set timing off
set termout off
set heading off
set long 99999
spool ctl_db_info.xml replace
select dbms_xmlgen.getxml('select * from dc_ctl.ctl_db_info') from dual;
exit

--步骤2:执行命令
sqlplus -S /nolog @hrxml.sql 运行此脚本

--环境变量cat .bash_profile
export ORACLE_HOME=/home/app_adm/instantclient_11_2
export HPLSQL_HOME=/home/app_adm/hplsql-0.3.31
export PATH=$PATH:$ORACLE_HOME:$HPLSQL_HOME
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export LD_LIBRARY_PATH=$ORACLE_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/

5.Oracle中的服务名以及SID默认是实例名称

--1. Oracle的服务名(ServiceName)查询
SQL> show parameter service_name;

--2. Oracle的SID查询命令:
SQL> select instance_name from v$instance;

--3. 查看Oracle版本
SQL> select version from v$instance

6. base64加解密

--base64加密
select utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('DC_CTL')))
  from dual;
--base64解密
select utl_raw.cast_to_varchar2(utl_encode.base64_decode(utl_raw.cast_to_raw('RENfQ1RM')))
  from dual;

7.oracle行转列

SELECT T.table_name,
       listagg(lower(T.COLUMN_NAME), ',') WITHIN GROUP(ORDER BY t.table_name, t.column_id) names
  FROM all_tab_columns t
 where table_name in ('ITS_ASSET_UNIT',
                      'ITS_PROD_CODE',
                      'ITS_DIVIDEND_DETAILS',
                      'ITS_ACCOUNT_REQUEST',
                      'ITS_INIT_DATE',
                      'ITS_AGREEMENT',
                      'ITS_INVEST_ACCOUNT',
                      'ITS_EXT_SIGN_INFO')
 GROUP BY T.table_name;

8. 在Oracle中查看表在那个存储过程中使用过

 --oracle 在Oracle中查看表在那个存储过程中使用过
 SELECT DISTINCT NAME
  FROM all_source
 WHERE TYPE = 'PROCEDURE'
   AND upper(text) LIKE '%TAP_TREQUEST_PARAMETER%';

9. 查看Oracle版本信息

--方法1
select * from v$version;
--方法2
SQL> col product format a35
SQL> col version format a15
SQL> col status format a15
SQL> select * from PRODUCT_COMPONENT_VERSION;

10. Oracle并行执行更新或者查询

UPDATE /*+ parallel(t 16) parallel(temp 16)*/ FUNDDC.DC_SHARE_HISTORY T

11. 存储过程异常捕获

exception
    when others then
      rollback;
      runCode := '1';
      logMsg  := DBMS_UTILITY.format_error_stack ||
                 DBMS_UTILITY.format_error_backtrace ||
                 DBMS_UTILITY.format_call_stack;
      RAISE_APPLICATION_ERROR(-20040,
                              'Oracle SQL错误码:' || SQLCODE || ',logMsg: ' || logMsg || ',错误消息:' ||
                              SUBSTR(SQLERRM, 1, 1000));

12. oracle报错ora-01940

--由于资源占用,oracle报错01940,解决方案如下:

--1.首先将索要删除的用户锁定,这句必须执行,否则之后杀死进程无效!
     alter user icontrol account lock;
--2.从【v$Session】表查看当前用户占用资源,有使用资源的情况下,肯定不能删除用户
     select saddr,sid,serial#,paddr,username,status from v$session where lower(username) = 'icontrol';
     select 'alter system kill session '''||sid||','||serial#||''';' from v$session where lower(username) = 'icontrol';
--3. 杀死status为【 INACTIVE】的进程,sid和seria#值为该列下的数值
  alter system kill session 'sid,serial#';
--4. 删除用户,如果不成功,即还是会报01940错,因为还有【 INACTIVE】进程没杀死
  drop user icontrol cascade;

13. oracle 新增字段

alter table sch_logs add level_ varchar2(8);
comment on column sch_logs.level_ is 'info,debug,error';

14.赋权

--将表Table_A的查询权限赋权给用户USER_A
GRANT SELECT ON Table_A to User_A;
--增删改查都开启权限的语句:
grant select,update,delete,insert on Table_A to USER_A;

15. Oracle中查看表空间位置

select * from dba_data_files;
create tablespace tbs_finedb datafile '/oradb/etldb/finedb.dbf' size 50M autoextend on next 10M maxsize unlimited;
create user finedb identified by finedb default tablespace tbs_finedb;

16. 恢复update、delete之前的数据

--恢复update、delete之前的数据
--根据修改语句查出你需要恢复的时间点
select * from v$sql where sql_text like '%update kycinfo%'
--new_table :新建表的名; table :误操作的表名;  2020-09-10 11:44:25:保存这个时间点的数据到新表。
create table new_kycinfo as select * from kycinfo as of timestamp to_timestamp('2023-08-03 17:00:06','yyyy-mm-dd hh24:mi:ss');
--将原表的数据全部删除
delete kycinfo ;
--把恢复的数据保存到原表。
insert into kycinfo select * from new_kycinfo ;

17.oracle中不同字符集占用字节

gkb  ->中文2个字节
utf8 ->中文3个字节

lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节
length(string)计算string所占的字符长度:返回字符串的长度,单位是字符
对于单字节字符,LENGTHB和LENGTH是一样的.
如可以用length(‘string’)=lengthb(‘string’)判断字符串是否含有中文。
注:
一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,UTF8时,长度为三。
select lengthb('飘') from dual   可查询汉字在Oracle数据库里占多少字节

18.获取前t-4个工作日的日期

--方式一
select t.date_id as exdate
  from (select a.date_id, rank() over(order by a.date_id desc) as rn
          from dw.dim_date a
         where a.date_id <=select value from icontrol.sch_variable
         where name = 'etf_rundate' )
           and a.is_workday = '1') t
 where t.rn = 4
--方式二
select c.sk_date 
 from ctl_srcdwn_batch a
inner join comm_cldr_custom b
   on a.busdate_int = b.sk_date
  and b.sk_calendar=1
inner join comm_cldr_custom c
   on b.workday_no - c.workday_no = 5
  and c.workday_flag=1
  and c.sk_calendar=1
where a.srcsys ='${dk_system}' and a.dwnframe ='${dk_frame}';

19. 获取Oracle中的建表语句

SELECT t1.Table_Name AS "表名称",
       t3.comments AS "表说明",
       t1.Column_Name AS "字段名称",
       t1.DATA_TYPE || '(' || t1.DATA_LENGTH || ')' AS "数据类型",
       t1.NullAble AS "是否为空",
       t2.Comments AS "字段说明",
       t1.Data_Default As "默认值"
  FROM cols t1
  LEFT JOIN user_col_comments t2
    ON t1.Table_name = t2.Table_name
   AND t1.Column_Name = t2.Column_Name
  LEFT JOIN user_tab_comments t3
    ON t1.Table_name = t3.Table_name
  LEFT JOIN user_objects t4
    ON t1.table_name = t4.OBJECT_NAME
 WHERE NOT EXISTS (SELECT t4.Object_Name
          FROM User_objects t4
         WHERE t4.Object_Type = 'TABLE'
           AND t4.Temporary = 'Y'
           AND t4.Object_Name = t1.Table_Name)
 ORDER BY t1.Table_Name, t1.Column_ID;

20. MYSQL不同版本对应的jdbc驱动类

--mysql3
org.gjt.mm.mysql.Driver
--mysql5
com.mysql.jdbc.Driver
--mysql8
com.mysql.cj.jdbc.Driver
--url
jdbc:mysql://10.169.1.239:3306/amc_newton?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true

--kettle使用jdbc驱动版本
mysql-connector-java-5.1.47.jar   --该版本支持MySQL3、5、8

21. excel VLOOKUP()函数的使用

=VLOOKUP(A2,B:B,1,0) A2在B列表中寻找匹配,匹配到显示B列的数据,匹配不到显示NA
=VLOOKUP(B2,A:A,1,0) B2在A列表中寻找匹配,匹配到显示A列的数据,匹配不到显示NA

22. oracle 存储过程备注

  -- Author  : APP_ADM
  -- Created : 2016/11/30 8:29:33
  -- Purpose : 统计MIS中PEER GROUP

23. 字段拼接

--字段拼接
listagg(a.manager_name, ',') within group(order by a.sk_managerid)
--例如:
select a.fund_code,
       listagg(a.sk_managerid, ',') within group(order by a.sk_managerid) as manager_code,
       listagg(a.manager_name, ',') within group(order by a.sk_managerid) as manager_name
  from funddc.prod_assoc_fundmanager a
 group by a.fund_code;
--000073	uo211,uo309,uo341,uo411,uo608	杜猛,乐琪,杨景喻,叶敏,刘辉

24. GPG加密

crontab -e 8,18,28,38,48,58 4-18 * * * /bin/sh /home/apple/apple_schedule.sh >> /home/apple/tmp/apple.log
--导入公钥 公钥加密文件,用私钥解密文件
gpg --import gpg/APPLERSA_public.asc
gpg --encrypt --recipient edi@group.apple.com --trust-model always
gpg --recipient edi@group.apple.com --trust-model always --output ./encrypted/$i.pgp --encrypt ./apple/$i 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/916349.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

css:修改盒子样式

圆角边框 在css3中新增了圆角边框样式&#xff0c;这样我们的盒子就可以长得奇形怪状了 像csdn上的发布就是圆角边框 还有这些 .x,.y {background-color: cornflowerblue;width: 200px;height: 200px;margin: 0 auto;text-align: center;border-radius: 10px;} 10px是什么意思…

连续九届EI稳定|江苏科技大学主办

【九届EI检索稳定|江苏科技大学主办 | IEEE出版 】 &#x1f388;【截稿倒计时】&#xff01;&#xff01;&#xff01; ✨徐秘书&#xff1a;gsra_huang ✨往届均已检索&#xff0c;已上线IEEE官网 &#x1f38a;第九届清洁能源与发电技术国际学术会议&#xff08;CEPGT 2…

机器学习 - 为 Jupyter Notebook 安装新的 Kernel

https://ipython.readthedocs.io/en/latest/install/kernel_install.html 当使用jupyter-notebook --no-browser 启动一个 notebook 时&#xff0c;默认使用了该 jupyter module 所在的 Python 环境作为 kernel&#xff0c;比如 C:\devel\Python\Python311。 如果&#xff0c…

DVWA靶场通关——SQL Injection篇

一&#xff0c;Low难度下unionget字符串select注入 1&#xff0c;首先手工注入判断是否存在SQL注入漏洞&#xff0c;输入1 这是正常回显的结果&#xff0c;再键入1 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for…

无人机飞手执照处处需要,森林、石油管道、电力巡检等各行业都需要

无人机飞手执照在多个行业中确实具有广泛的应用需求&#xff0c;包括森林、石油管道、电力巡检等领域。以下是对这些领域无人机飞手执照需求的具体分析&#xff1a; 一、森林领域 在森林领域&#xff0c;无人机飞手执照对于进行高效、准确的森林资源管理和监测至关重要。无人机…

基于YOLO11/v10/v8/v5深度学习的水面垃圾智能检测识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

家政服务小程序,家政行业数字化发展下的优势

今年以来&#xff0c;家政市场需求持续增长&#xff0c;市场规模达到了万亿级别&#xff0c;家政服务行业成为了热门行业之一&#xff01; 家政服务种类目前逐渐呈现了多样化&#xff0c;月嫂、保姆、做饭保洁、收纳、维修等家政种类不断出现&#xff0c;满足了居民日益增长的…

音视频入门基础:MPEG2-TS专题(3)——TS Header简介

注&#xff1a;本文有部分内容引用了维基百科&#xff1a;https://zh.wikipedia.org/wiki/MPEG2-TS 一、引言 本文对MPEG2-TS格式的TS Header进行简介。 进行简介之前&#xff0c;请各位先下载MPEG2-TS的官方文档。ITU-T和ISO/IEC都分别提供MPEG2-TS的官方文档。但是ITU提供的…

Spring Boot框架:构建符合工程认证的计算机课程

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

【ubuntu16.04】机器人学习笔记遇到的问题及解决办法:仿真小海龟

18版本的后面会出问题&#xff0c;避免万一我还是用了之前的16版本&#xff0c;虽然还没有解决粘贴的问题&#xff0c;但是安装ros很成功 可参考该文章博主讲的很详细&#xff0c;成功画出海龟 最后要把鼠标停在第三个终端&#xff0c;再去点击键盘&#xff0c;海龟才会动哦

Unity学习---IL2CPP打包时可能遇到的问题

写这篇主要是怕自己之后打包的时候出问题不知道怎么搞&#xff0c;所以记录一下。 问题一&#xff1a;类型裁剪 IL2CPP打包后会自动对Unity工程的dll进行裁剪&#xff0c;将代码中没有引用到的类型裁剪掉。特别是通过反射等方式调用一些类的时候&#xff0c;很容易出问题。 …

批量将MySQL中的MyISAM引擎,改成InnoDB引擎

一、InnoDB和MyISAM的区别 MySQL中InnoDB和MyISAM是两种常用的存储引擎&#xff0c;具有以下不同的特点&#xff1a; 序号InnoDBMyISAM说明事务支持支持不支持InnoDB可以处理更复杂的业务逻辑&#xff0c;而MyISAM在处理大量并发写入时可能会遇到问题‌锁定机制行级锁定表级锁…

认证鉴权框架SpringSecurity-1--概念和原理篇

1、基本概念 Spring Security 是一个强大且高度可定制的框架&#xff0c;用于构建安全的 Java 应用程序。它是 Spring 生态系统的一部分&#xff0c;提供了全面的安全解决方案&#xff0c;包括认证、授权、CSRF防护、会话管理等功能。 2、认证、授权和鉴权 &#xff08;1&am…

C++11新特性(二)

目录 一、C11的{} 1.初始化列表 2.initializer_list 二、可变参数模版 1.语法与原理 2.包扩展 3.empalce接口 三、新的类功能 四、lambda 1.语法 2.捕捉列表 3.原理 五、句装器 1.function 2.bind 一、C11的{} 1.初始化列表 C11以后想统⼀初始化⽅式&#xff0…

Nginx配置自带的stub状态实现活动监控指标

场景 为了确保应用以最佳性能和精度运行&#xff0c;需要清晰地了解有关其活动的监控指标。 NGINX 提供了多种监控选项&#xff0c;例如 stub 状态。 注&#xff1a; 博客&#xff1a;霸道流氓气质-CSDN博客 实现 启用 NGINX stub 状态 启用 NGINX HTTP 服务器内 locati…

RabbitMQ-死信队列(golang)

1、概念 死信&#xff08;Dead Letter&#xff09;&#xff0c;字面上可以理解为未被消费者成功消费的信息&#xff0c;正常来说&#xff0c;生产者将消息放入到队列中&#xff0c;消费者从队列获取消息&#xff0c;并进行处理&#xff0c;但是由于某种原因&#xff0c;队列中的…

Redisson的可重入锁

初始状态&#xff1a; 表示系统或资源在没有线程持有锁的情况下的状态&#xff0c;任何线程都可以尝试获取锁。 线程 1 获得锁&#xff1a; 线程 1 首次获取了锁并进入受保护的代码区域。 线程 1 再次请求锁&#xff1a; 在持有锁的情况下&#xff0c;线程 1 再次请求锁&a…

java程序打包及执行 jar命令及运行jar文件

java程序打包及执行 jar命令及运行jar文件 打包命令&#xff1a; 安装完成jdk之后采用 jar命令进行打包 jar -cvfe ddd.jar -C bin/ddd.java 打包 ddd.java 文件 jar -cvfe dddd.jar -C . 注意 -C 后面的点. 表示当前目录下所有 如图&#xff1a; 运行jar 文件 java -class…

视频孪生技术在金融银行网点场景中的应用价值

作为国民经济重要的基础行业&#xff0c;金融行业在高速发展的同时衍生出业务纠纷、安全防范、职能管理等诸多问题&#xff0c;对安全防范和监督管理提出了更高的要求。因此&#xff0c;如何能更好的利用视频监控系统价值&#xff0c;让管理人员更简便的浏览监控视频、更快速的…

SpringCloud OpenFeign负载均衡远程调用 跨服务调用 连接池优化

介绍 Spring Cloud OpenFeign 是 Spring Cloud 的一部分&#xff0c;提供了一种声明式的 HTTP 客户端方式来简化服务间的通信。通过 OpenFeign&#xff0c;开发者可以像调用本地方法一样&#xff0c;轻松地调用远程服务&#xff0c;而不需要手动处理 HTTP 请求、响应和连接等底…