说在前面的话;由于公司要把数据放在大数据平台hive数据仓库中进行数据的展示,处理等,目前数据是在oracel中,那么进行数据的迁移首先就是要建立相应的表结构喽 ,那么问题来了 原来在oracel中的数据库中有几百张表,如果手动一张一张的建立话,耗时又耗力,下面介绍三种方式把oracel中的表结构转化我hive可以使用的
方式一:注意的地方:拼接的sql可能超出了要截取的长度,字符串varchar2最多存储4000
select to_char(substr(table_prefix || col_strs || table_subfix, 1, 4000)) con
from (select n.table_prefix,
wm_concat(m.col_str) as col_strs,
n.table_subfix
from (select a.table_name,
'drop table if exists ' || lower(a.table_name) ||
';create table ' || lower(a.table_name) || '(' as table_prefix,
') comment ''' || b.comments ||
''' ROW FORMAT DELIMITED FIELDS TERMINATED BY ''\t'' ESCAPED BY ''\\'' STORED AS TEXTFILE;' as table_subfix
from user_tables a, user_tab_comments b
where a.table_name = b.table_name
--and a.table_name = 'MID'
order by a.table_name) n,
(select c.TABLE_NAME,
c.column_name || ' ' ||
decode(c.data_type,
'VARCHAR2',
'varchar' || '(' || c.DATA_LENGTH || ')',
'NUMBER',
'int',
'DATE',
'timestamp',
'CHAR',
'CHAR' || '(' || c.DATA_LENGTH || ')',
'CLOB',
'string',
c.data_type) as col_str
from user_tab_cols c) m
where n.table_name = m.table_name
group by n.table_prefix, n.table_subfix)
union all
select 'alter table ' || c.TABLE_NAME || ' change ' || c.column_name || ' ' ||
c.column_name || ' ' || decode(c.data_type,
'VARCHAR2',
'varcha

本文介绍了如何将大量Oracle中的表结构高效地转换为Hive支持的格式,以适应大数据平台的需求。针对手动创建表结构耗时耗力的问题,提出了三种自动化转换方法,包括注意SQL字符串长度限制、解决PL/SQL Developer缓冲问题以及保持字段顺序不变的转换策略。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



