使用Talend Open Studio将数据从oracle导入到hive中

先使用Tos建立模型,将Oracle中的数据导入到本地:

build job后,形成独立可以运行的程序:

将生成的zip文件,上传到hadoop集群上,有hive环境的机器上:

[[email protected] work]$ ls
file.zip  jobInfo.properties  join  lib
[[email protected] work]$ cd join/
[[email protected] join]$ ls
bigdatademo  items  join_0_1.jar  join_run.bat  join_run.sh  src  user_activity2
[[email protected] join]$ pwd
/home/work/join
[[email protected] join]$ ls
bigdatademo  items  join_0_1.jar  join_run.bat  join_run.sh  src  user_activity2
[[email protected] join]$ pwd
/home/work/join
[[email protected] join]$ ./join_run.sh > user_activity2 2>&1 &

这样就得到了SQL语句执行的结果,存放在user_activity2中。

hive建表语句:

hive> show create table user_activity2;
OK
CREATE TABLE `user_activity2`(
  `user_id` string,
  `user_name` string,
  `sex` string,
  `age` string,
  `reg_hosp` string,
  `reg_community` string,
  `type` string,
  `disease_code` string,
  `disease` string,
  `doctor` string,
  `hosp_name` string,
  `service_id` string,
  `drug_id` string,
  `drug_name` string,
  `antibiotic` string,
  `hormone` string,
  `source` string,
  `base_drug` string,
  `community` string,
  `date` string)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ‘|‘
STORED AS INPUTFORMAT
  ‘org.apache.hadoop.mapred.TextInputFormat‘
OUTPUTFORMAT
  ‘org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat‘
LOCATION
  ‘hdfs://h1:8020/apps/hive/warehouse/cyw.db/user_activity2‘
TBLPROPERTIES (
  ‘transient_lastDdlTime‘=‘1435547544‘)
Time taken: 0.288 seconds, Fetched: 31 row(s)

将数据导入到hive表中:load data local inpath ‘./user_activity2‘ into table user_activity2;

hive> show tables;
OK
Time taken: 0.794 seconds
hive> use cyw;
OK
Time taken: 0.256 seconds
hive> show tables;
OK
user_activity
user_activity2
Time taken: 0.136 seconds, Fetched: 2 row(s)
hive> load data local inpath ‘./user_activity2‘ into table  user_activity2;
Loading data to table cyw.user_activity2
Table cyw.user_activity2 stats: [numFiles=1, totalSize=216927483]
OK
Time taken: 10.898 seconds
hive> select * from user_activity2;
OK
F805418B-335F-4CA3-A209-7C9655148146    余泽英  2       47      成都高新区合作社区卫生服务中心  合作    1               急性支气管炎    谭万龙  成都高新区合作社区卫生服务中心  1E972231-C65A-4CE3-9233-8EA1B18058DE  灭菌注射用水    d875aacf-4723-4777-91ec-12d63732b58f    0       0       其他            合作    2014-02-27
F805418B-335F-4CA3-A209-7C9655148146    余泽英  2       47      成都高新区合作社区卫生服务中心  合作

查询语句:

select a.个人id,
       b.姓名,
       b.性别,
       round((sysdate - b.出生日期) / 365) as fage,
       b.建档单位,
       replace(replace(replace(b.建档单位, ‘高新区‘), ‘社区卫生服务中心‘),
               ‘成都‘) 建档社区,
       1 as ftype,
       a.问题编码,
       a.问题名称,
       a.处理医生,
       c.机构名,
       a.服务记录id,
       f.名称,
       f.id 药品ID ,
       f.抗生素,
       f.激素类药,
       case when f.药品来源 is null then ‘其他‘ else f.药品来源 end 药品来源,
       f.基药分类,
       replace(replace(replace(c.机构名, ‘高新区‘), ‘社区卫生服务中心‘),‘成都‘) 诊疗社区,
       to_char(a.发现日期,
‘yyyy-mm-dd‘) 诊疗日期
  from ZLCHS.个人问题列表 a,
       ZLCHS.个人信息 b,
       ZLCHS.服务活动记录 c,
       (select d.事件id, e.名称, e.id, h.药品来源, h.基药分类, g.抗生素, g.激素类药
          from ZLCHS.个人费用记录 d, ZLCHS.收费项目目录 e, ZLCHS.药品规格 h, ZLCHS.药品特性 g
         where d.收费项目id = e.id
           and d.收据费目 in (‘西药费‘, ‘中草药费‘, ‘中成药费‘)
           and h.药品id(+) = e.id
           and h.药名id = g.药名id) f
 where a.个人id = b.id(+)
   and a.服务记录id = c.id(+)
   and a.服务记录id = f.事件id(+)
时间: 2024-11-07 22:34:04

使用Talend Open Studio将数据从oracle导入到hive中的相关文章

sqoop操作之ORACLE导入到HIVE

导入表的所有字段 sqoop import --connect jdbc:oracle:thin:@192.168.1.107:1521:ORCL \ --username SCOTT --password tiger \ --table EMP \ --hive-import --create-hive-table --hive-table emp -m 1; 如果报类似的错: ERROR tool.ImportTool: Encountered IOException running imp

SQL大圣之路笔记——把Excel中的数据通过Access导入到DataBase中

把Excel中的数据通过Access导入到DataBase中 1.打开Access ,点击“EXTERNAL DATA",选择上传”excel",选中需要导入的excel,点击ok. 2.选择excel中需要上传数据的sheet,点击”next",再点击“next”,选择列明,更改 Data Type (Short Text类型导入后会成为nvarchar);点击“next”,再点击“next” ,设定导入DB之后的表名,点击“finish”. 3.右击表名,点击“Expor

Talend 将Oracle中数据导入到hive中,根据系统时间设置hive分区字段

首先,概览下任务图: 流程是,先用tHDFSDelete将hdfs上的文件删除掉,然后将oracle中的机构表中的数据导入到HDFS中:建立hive连接->hive建表->tJava获取系统时间->tHiveLoad将hdfs上的文件导入到hive表中. 下面介绍每一个组件的设置: tHDFSDelete_1: 机构: tHDFSOutput_1: hive: tHiveCreateTable: tJava_1: tHiveLoad_1: 在Context下面建一个内容变量: 这个内容变

使用Sqoop,最终导入到hive中的数据和原数据库中数据不一致解决办法

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中. 1.问题背景 使用Sqoop把oracle数据库中的一张表,这里假定为student,当中的数据导入到hdfs中,然后再创建hive的external表,location到刚才保存到hdfs中数

使用sqoop将mysql数据导入到hive中

首先准备工具环境:hadoop2.7+mysql5.7+sqoop1.4+hive3.1 准备一张数据库表: 接下来就可以操作了... 一.将MySQL数据导入到hdfs 首先我测试将zhaopin表中的前100条数据导出来,只要id.jobname.salarylevel三个字段. 再Hdfs上创建目录 hadoop fs -mkdir -p /data/base #用于存放数据 我们cd到sqoop目录下执行命令 # \ 用于换行bin/sqoop import --connect jdbc

使用Ora2Pg工具把数据从Oracle导入到PostgreSQL

本文只介绍如何使用Ora2Pg从Oracle导出数据到PostgreSQL,但是在操作前需要先安装先决软件DBD::Oracle.DBI.Ora2Pg. 安装参考:Linux下安装DBD::Oracle.DBI和Ora2Pg 安装Ora2Pg完成会在/etc目录下生成一个ora2pg目录里面有使用Ora2Pg的配置文件. 1.在Oracle上创建测试用户并创建测试表 [email protected]>create user zhaoxu identified by zhaoxu; User c

sqoop clob从Oracle导入到hive   回车换行导致记录增多

sqoop import --hive-import --hive-overwrite  --connect jdbc:oracle:thin:@192.168.92.136:1521:cyporcl --username ODS --password 'od154DS$!('  -m 1  --hive-database ODS --table Q_TRA_DISPUTESTATUS --fields-terminated-by '\001' --hive-drop-import-delims

[Sqoop]将Mysql数据表导入到Hive

业务背景 mysql数据表YHD_CATEG_PRIOR结构如下: -- Table "YHD_CATEG_PRIOR" DDL CREATE TABLE `YHD_CATEG_PRIOR` ( `category_id` int(11) NOT NULL COMMENT '类目ID', `category_name` varchar(250) DEFAULT NULL COMMENT '类目名称', `category_level` int(11) DEFAULT '0' COMME

使用sqoop1.4.4从oracle导入数据到hive中错误记录及解决方案

在使用命令导数据过程中,出现如下错误 sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.29.16:1521/testdb --username NAME --passord PASS --verbose -m 1 --table T_USERINFO 错误1:File does not exist: hdfs://opt/sqoop-1.4.4/lib/commons-io-1.4.jar FileNotFoundEx