最近在做项目的时候将hive中的数据导入到mysql的时候出现了中文乱码,查了好久才得以解决,给大家分享一下。
首先将MySQL的编码都设置为utf-8
set character_set_results = utf8;
一般在创建表的时候可以使用character set utf8 collate utf8_general_ci设置编码,例如
CREATE TABLE taobaoinfo (
rowkey VARCHAR(200) NOT NULL PRIMARY KEY,
date VARCHAR(200),
url VARCHAR(200),
itemId VARCHAR(200),
itemName VARCHAR(200),
type VARCHAR(200),
location VARCHAR(200),
current_price VARCHAR(200),
original_price VARCHAR(200),
saleNum VARCHAR(200),
place VARCHAR(200),
shopId VARCHAR(200),
restNum VARCHAR(200),
shopName VARCHAR(200)
)character set utf8 collate utf8_general_ci;
如果建表的时候没有设置,那么就需要删除重新创建或者手动修改,这里是利用图形化界面修改,右键点击设计表
确认一下是不是所有的会出现中文的字段的字符集都为utf8,如果不是请则将所有的都手动改过来
确认无误后,就可以运行sqoop了
关键点是这句话:?useUnicode=true&characterEncoding=utf-8
sqoop export \
--connect "jdbc:mysql://hadoop03:3306/taobao?useUnicode=true&characterEncoding=utf-8" \
--username root \
--password 123456 \
--table taobaoinfo \
--export-dir /user/hive/warehouse/taobao.db/taobaoinfo2 \
--input-fields-terminated-by '\001'
问题解决~~