第一种方法
动态分区插入数据:
1、在shell 里面进入beeline用户:beeline -u ‘jdbc:hive2://100000.70000.80008.20002:100000001‘ -n user -p ‘/password‘
2、动态分区插入:insert into table cmf_cmcs.dwd_cust_xx partition(mem_id) select * from cmf_cmcs.dwd_cust_xx_lzq;
3、执行插入语句时会报错:截取报错信息:set hive.exec.dynamic.partition.mode=nonstrict
第二种方法
INSERT INTO TABLE cmf_cmcs.dwd_cust_xx PARTITION (mem_id = ‘10100‘)
SELECT xx_customer_id,
customer_idxx,
mem_r_idxx,
namxx,
genxx,
birxx,
cerxx,
certixx,
birxx,
cexx,
natixx,
raxx,
mxxl,
lifexxe,
croxx,
crexx,
crxx,
upxx,
uxx
FROM cmf_cmcs.dwd_cust_xx_lzq
WHERE xxx_id =‘10100‘
第三种方法:
1、创建一个相同的表结构create table dws_t_cust_xx_lzq as select * from dws_t_cust_xx where 1=0;
2、将表结构load csv文件到本地 找到相关联字段,造好测试场景需要的数据
3、将csv造好的数据放到notepad++中将空格转换成分隔符
4、将转换好的文件数据。hive库中找到自己创建的新表右键--open table browser-- Location--upload或者选择三杠下拉选择--File--home–user,用desc formatted查看表的路径copy到该路径下,--upload数据进去
5、验证导入临时表的数据是否乱码,数据对应是否正确
6、将临时表数据load到正式表中INSERT into TABLE dws_t_cust_base SELECT * from dws_t_cust_xx_lzq
7、最后执行调度作业,编写sql验证结果
第四种方法:
导入有分区的表:INSERT OVERWRITE TABLE ods_bak_t_xx_info PARTITION (pdate = ‘2018-10-29‘)
SELECT * from ods_bak_t_xx_info_test
查看 属于什么用户
fs -ls /user/hive/warehouse/cmft_cmcs.db
hadoop fs -ls /user/hive/warehouse/cmft_cmcs.db/ods_mams_bak_t_xx
--查看内部外部表---
desc formatted cmft_cmcs.ods_mams_t_xx_logs;
show create table cmft_cmcs.ods_mams_t_xx_logs;
将外部表转换成内部表:alter table cmft_cmcs.ods_mams_bas_t_xxx set TBLPROPERTIES(‘EXTERNAL‘=‘false‘) 清数据前要转成内部表
shell:脚本路径/data/etlscript/CMCS_ODS/SCRIPT/ods_mams_sqoop_extract
说明:
case when k.contact_type_id = ‘mobile‘ then k.contact_detail else null end as mobile_no:如果k.contact_type_id =‘mobile‘ 就取他的值 k.contact_detail ,如果!=就=null
insert into cmrh_cmcs.ods_bas_t_uc_xx select ---造表数据某个字段和某个表数据关联上
updxx,
uxx,
crxx,
crxx,
isxxd,
gxxr,
birtxxte,
crxxlsxxo,
crexxls_type,
name,
‘cff0a8bf-9dd3-45a7-890f-cb314e0f7199‘,
etl_time
from cmrh_cmcs.ods_bas_t_uc_xx where user_id = ‘cff0a8bf-9dd3-45a7-890f-cb314e0f7199‘
原文:https://www.cnblogs.com/luozqqin001/p/12718700.html