Sqoop导出到MySQL中文乱码问题

最近在做项目的时候将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;

如果建表的时候没有设置,那么就需要删除重新创建或者手动修改,这里是利用图形化界面修改,右键点击设计表

Sqoop导出到MySQL中文乱码问题_第1张图片

确认一下是不是所有的会出现中文的字段的字符集都为utf8,如果不是请则将所有的都手动改过来

Sqoop导出到MySQL中文乱码问题_第2张图片

确认无误后,就可以运行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'

问题解决~~

你可能感兴趣的:(#,Hadoop组件)