Sqoop将Hive和Sqlserver、Oracle数据的导入导出

本文详细介绍如何使用sqoop工具实现hive与SQL Server、Oracle之间的数据导入导出操作,包括指定字段导出、数据导入HDFS及Hive、条件导入等,并介绍sqoop eval工具的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

补充:使用sqoop导入导出hive数据到sqlserver只需要将sqljdbc4-4.jar包放到sqoop lib目录下即可,jar包可以在网上下载,或者去https://download.youkuaiyun.com/download/xinguopeng/12445475 下载

一、数据导出Hive
1、部分字段导出,指定表目录
sqoop export --connect ‘jdbc:sqlserver://localhost:1433;username=sa;password=1;database=test_db’ --table t_test --columns “city_code,city_name,total_times,dt” --export-dir /home/hadoop/hive_date/warehouse/db_test.db/t_test/dt=2020 --input-fields-terminated-by ‘\001’;

注意:
–columns指定的是sqlserver中表的字段,顺序要和hive表中字段顺序对应上;
–input-fields-terminated-by ‘\001’ 指定hive字段分隔符

二、数据导入Hive
1、把数据导入到hdfs
sqoop import --connect ‘jdbc:sqlserver://192.168.10.22:1433;username=sa;password=1;database=test_db’ --query “select city_code,city_name,total_times,dt,cast(sjc as bigint) as sjc_n from t_test where $CONDITIONS” --target-dir /home/hadoop/hive_date/data_test/t_test -m 1 --split-by ‘1’ --fields-terminated-by ‘\001’ --hive-drop-import-delims

把数据导入到Hive
load data inpath ‘/home/hadoop/hive_date/data_test/t_test/*’ into table t_test partition(dt=‘2020’);

注意:
–fields-terminated-by ‘\001’ 指定存到hdfs上的分隔符
–hive-drop-import-delims 删除数据中换行符避免数据串行
sjc 字段为sqlserver中的时间戳字段,转成int类型后插入hive
-m 设置map数量
–split-by 如果表中有唯一主键列,可以直接指定此列为拆分map的依据,如果只设置1个map,那么直接给一个固定值即可。如-m设置为2,主键id列为1–100的100条数据,那么会直接拆为1-50和51-100的两个map进行导数据

2、指定sql条件oracle数据导入hive
sqoop import --hive-import --connect jdbc:oracle:thin:@localhost:1521:gbxm --username mzl_test --password lian123 --table TEST_0605 -m 1 --columns “SJC,NAME,JGBM” --where “hive_seq >= 1” --hive-table db_test.ETL_TEST_0605 --hive-drop-import-delims --hive-overwrite --hive-partition-key dt --hive-partition-value 20200615 --null-non-string ‘\N’ --null-string ‘\N’ --delete-target-dir

–columns 指定导入的列名,必须大写
–hive-import 必须加,数据先导入临时目录然后才会导入hive表和分区
–delete-target-dir 如果临时目录在hdfs文件已经有了则先删除
–where 指定sql条件
–hive-partition-key 指定hive分区字段
–hive-partition-value 指定分区值

三、sqoop的eval工具
在使用sqoop导出hive数据到sqlserver之前,可以先清空sqlserver表中的数据
sqoop eval --connect jdbc:mysql://localhost:3306/test --username sa --password 1 --query “truncate table t_test”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值