oracle和hive中的数据类型存在差异,在oracle集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和oracle结构一致的表。

oracle到hive数据类型映射参考如下:

select case when t1.column_id=1 then 'CREATE TABLE IF NOT EXISTS '||'project'||'.'||t1.owner||'_'||t1.table_name||chr(10) end
||RPad(case when t1.column_id=1 then '(' else ',' end||t1.column_name,33,' ')
||RPad(case when t1.data_type in ('CHAR','VARCHAR2')     then 'VARCHAR('||t1.data_length||')' when t1.data_type in ('TIMESTAMP(6)','DATE') then 'TIMESTAMP' when t1.data_type ='NUMBER' and t1.data_scale=0 and t1.data_precision =1 then 'TINYINT'when t1.data_type ='NUMBER' and t1.data_scale=0 and t1.data_precision <4 then 'SMALLINT'when t1.data_type ='NUMBER' and t1.data_scale=0 and t1.data_precision <9 then 'INT'when t1.data_type ='NUMBER' and t1.data_scale=0 and t1.data_precision <19 then 'BIGINT'when t1.data_type ='NUMBER' and t1.data_scale=0 and t1.data_precision >=19 then 'STRING'when t1.data_type ='NUMBER' and t1.data_scale>0 and t1.data_scale <=38 and t1.data_precision <=38 then 'DECIMAL('||t1.data_precision||','||t1.data_scale||')'when t1.data_type ='FLOAT'  then 'DOUBLE'else 'STRING' end,50,' ')||' COMMENT '''||case when t4.column_name is not null then 'primary_key:' else '' end||replace(t2.comments,'''','')||''''||case when max(t1.column_id) over() = t1.column_id then chr(10)||',ETL_SJ STRING COMMENT ''ETL时间'')COMMENT '''||t3.comments||'''
PARTITIONED BY (RFQ STRING COMMENT ''同步日期'');' end as colfrom sys.dba_tab_cols t1inner join sys.dba_col_comments t2 on t1.owner =t2.ownerand t1.table_name = t2.table_nameand t1.column_name = t2.column_nameinner join sys.dba_tab_comments t3on t1.owner =t3.ownerand t1.table_name = t3.table_nameleft join(
select t2.table_owner,t2.table_name,t2.column_namefrom (
select table_name,table_owner,index_name
,row_number() over(order by case when instr(index_name,'PK')>0 then instr(index_name,'PK') else 100 end asc) as ccfrom sys.dba_indexeswhere uniqueness  =upper('UNIQUE')and index_type ='NORMAL'and table_owner||'_'||table_name=upper('owner_table'))t1inner join sys.dba_ind_columns t2on t1.index_name =t2.index_nameand t1.table_name =t2.table_nameand t1.table_owner=t2.table_ownerwhere t1.cc=1)t4on t1.owner      =t4.table_ownerand t1.table_name =t4.table_nameand t1.column_name=t4.column_namewhere t1.data_type not in ('LONG','NCLOB', 'CLOB','BLOB','BFILE','CFILE')and t1.owner||'_'||t1.table_name =upper('owner_table')
order by t1.column_id;
beginDBMS_OUTPUT.enable(BUFFER_SIZE => NULL);for i in (select owner||'_'||table_name tab from dba_tables where owner in (
'HX_ZS'
)) LOOPFOR J IN (select case when t1.column_id=1 then 'CREATE TABLE IF NOT EXISTS '||'project'||'.'||t1.owner||'_'||t1.table_name||chr(10) end
||RPad(case when t1.column_id=1 then '(' else ',' end||case when t1.column_name='SJLYBZ' then 'SJLYBZ_1' else t1.column_name end,33,' ')
||RPad(case when t1.data_type in ('VARCHAR2')     then 'VARCHAR('||t1.data_length||')' when t1.data_type in ('CHAR')     then 'CHAR('||t1.data_length||')'  when t1.data_type in ('TIMESTAMP(6)','DATE') then 'TIMESTAMP' when t1.data_type ='NUMBER' and t1.data_scale=0 and t1.data_precision =1 then 'TINYINT'when t1.data_type ='NUMBER' and t1.data_scale=0 and t1.data_precision <4 then 'SMALLINT'when t1.data_type ='NUMBER' and t1.data_scale=0 and t1.data_precision <9 then 'INT'when t1.data_type ='NUMBER' and t1.data_scale=0 and t1.data_precision <19 then 'BIGINT'when t1.data_type ='NUMBER' and t1.data_scale=0 and t1.data_precision >=19 then 'DECIMAL('||t1.data_precision||','||t1.data_scale||')'when t1.data_type ='NUMBER' and t1.data_scale>0 and t1.data_scale <=38 and t1.data_precision <=38 then 'DECIMAL('||t1.data_precision||','||t1.data_scale||')'when t1.data_type ='FLOAT'  then 'DOUBLE'else 'STRING' end,50,' ')||' COMMENT '''||case when t4.column_name is not null then 'primary_key:' else '' end||replace(t2.comments,'''','')||''''||case when max(t1.column_id) over() = t1.column_id then chr(10)||',YPTETL_SJ TIMESTAMP COMMENT  '||CHR(39)|| '云平台ETL时间'||CHR(39)||')COMMENT '''||t3.comments||'''
PARTITIONED BY (rfq CHAR(8) COMMENT '||CHR(39)|| '日分区'||CHR(39)||',sjlybz VARCHAR(20)  COMMENT '||CHR(39)|| '数据来源标志'||CHR(39)||');' end as colfrom sys.dba_tab_cols t1inner join sys.dba_col_comments t2 on t1.owner =t2.ownerand t1.table_name = t2.table_nameand t1.column_name = t2.column_nameinner join sys.dba_tab_comments t3on t1.owner =t3.ownerand t1.table_name = t3.table_nameleft join(
select t2.table_owner,t2.table_name,t2.column_namefrom (select t6.owner table_owner, t6.table_name, t6.column_namefrom dba_constraints t5, dba_cons_columns t6where t5.table_name = t6.table_nameand t5.owner = t6.ownerand t5.constraint_name = t6.constraint_nameand CONSTRAINT_TYPE IN ('P')and t5.OWNER ||'_'||t5.table_name =i.tab)t4on t1.owner      =t4.table_ownerand t1.table_name =t4.table_nameand t1.column_name=t4.column_namewhere t1.data_type not in ('LONG','NCLOB', 'CLOB','BLOB','BFILE','CFILE')and t1.owner||'_'||t1.table_name =i.tab
order by t1.column_id) loop
dbms_output.put_line(j.col);
end loop ;
end loop;
end;
/

oracle到hive数据类型转换相关推荐

  1. MYSQL 与 Oracle 之间的数据类型转换

    2009-07-21 MYSQL 与 Oracle 之间的数据类型转换 关键字: mysql, oracle, 数据类型, 转换 Table 2-4 Default Data Type Mapping ...

  2. hive数据类型转换

    博客地址:http://www.iteblog.com/ 文章标题:<Hive数据类型转换> 本文链接:http://www.iteblog.com/archives/892 Hadoop ...

  3. mysql oracle 数据类型转换_Mysql与Oracle之间的数据类型转换

    [转]MYSQL 与 Oracle 之间的数据类型转换

  4. Hive系列 (六):Hive数据类型转换

    文章目录 Hive系列文章 数据类型转换 Cast显示转换 数据类型转换表 日期类型转换说明 转换示例 Hive系列文章 Hadoop完全分布式搭建(腾讯云服务器+阿里云服务器) Hive系列 (一) ...

  5. mysql到hive数据类型转换

    1.类型映射关系 mysql和hive中的数据类型存在差异,在mysql集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和mysql结构一致的表. mys ...

  6. 【hive】mysql到hive数据类型转换

    1.类型映射关系 mysql和hive中的数据类型存在差异,在mysql集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和mysql结构一致的表. mys ...

  7. HIVE 数据类型转换

    Hive内置数据类型由基本数据类型和复杂数据类型组成.今天的话题是Hive数据类型之间的转换.同Java语言一样,Hive也包括 隐式转换(implicit conversions)和显式转换(exp ...

  8. oracle和mysql数据类型转换_oracle数据库和MySQL数据库中表格转换时的数据类型

    下面是oracle数据库中的语句请问前辈将下面语句转换成MySQL里的语句是什么样的坐等CREATETABLE"LXA"."USERS"("U_ID& ...

  9. oracle java数据类型转换函数_Oracle基础——单行函数(类型转换函数)

    零点起飞学Oracle 正版现货 155.4元 (需用券) 去购买 > Oracle基础--单行函数(类型转换函数) 在执行运算的过程中,经常需要把一种数据类型转换成另一种数据类型. 数据转换分 ...

最新文章

  1. Git 使用规范流程
  2. AI正在如何重塑生活和消费?头部企业齐聚,邀你共谈智能产业新机会
  3. 滴滴基于 Flink 的实时数仓建设实践
  4. 疯狂软件2月3日Android就业班课程详细
  5. kubernetes1.8.4安装指南 -- 2. ssh免密登录
  6. python语法基础知识案例_Python 语法速览与实战清单
  7. python白森_氧气恋人小说-江白森修辞在线阅读-829阅读网
  8. scala 当前日期_如何在Scala中检查当前日期和时间?
  9. Js数组排序函数sort()介绍
  10. C语言复杂声明解读简明方法
  11. Linux下Hadoop运行mongodb对应的 jar 报错java.lang.NoClassDefFoundError:ClassNotFoundException
  12. JAVASE篇的入门经典书籍推荐
  13. Linux脏牛漏洞提权
  14. 残差分析(残差原理与标准化残差分析)
  15. Y7000联想拯救者gtx1050Ti安装cuda9.0
  16. js对金额数据添加最大金额单位【千、万、十万...】
  17. m4a转mp3简单的音频转换方法?
  18. windows下Linux系统U盘启动盘制作与系统安装图文教程
  19. 网络是怎样连接的--TCP大致控制流程
  20. 数据结构与算法分析:斐波那契堆

热门文章

  1. Java变量与方法的调用:同类操作中与跨类操作中的对比
  2. oracle中使用 (trunc\add_months\last_day\case when)根据二月的天数判断是平年(二月28天)还是闰年(二月29天)
  3. 【Java小案例】从简到精完美判断年份是闰/平年和该年二月份有几天
  4. 多次请求事务未提交导致的数据重复入库问题
  5. [原创]快钱99bill网站安全性测试漏洞之“跨站式脚本注入”
  6. Azure机器学习——计算目标03:使用 Azure机器学习工作室配置计算目标
  7. 东方音图英语教学系统服务器,东方音图英语教育理念.ppt
  8. 关于手机号验证注意事项(可能出现19,16开头)
  9. 持续集成测试-Jenkins
  10. 制药工程专业可以跨考计算机,我是学音乐大三学生想考研,想考别的专业请问能考什么专业比较好考...