gpt4 book ai didi

mysql - 使用Sqoop导入Mysql UTF8数据的问题

转载 作者:行者123 更新时间:2023-11-29 18:26:09 25 4
gpt4 key购买 nike

我正在使用 sqoop import 将 utf8 数据从 MySql 导入到 HDFS。它工作正常,但当数据为 utf-8 时面临问题。源 MySql 表与 utf-8 兼容,但看起来 sqoop 正在导入期间转换数据。示例 - 源值 - л.с。加载为л.Ñ。到 HDFS。

目前,Mysql (v5.6.10) 字符集和排序规则如下:

+--------------------------+-----------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | utf8_unicode_ci |
+--------------------------+-----------------------------------------+

-- Table Structure
CREATE TABLE utf_test_cases_ms
(
test_case varchar(50) NOT NULL,
english_lang varchar(250) NOT NULL,
language_name varchar(50) NOT NULL,
utf8_lang varchar(300) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

-- Mysql
select * from utf_test_cases_ms;
+--------------------+--------------+---------------+-----------+
| test_case | english_lang | language_name | utf8_lang |
+--------------------+--------------+---------------+-----------+
| Multiple Character | hp | Russian | л.с. |
+--------------------+--------------+---------------+-----------+

-- Sqoop Import Command
sqoop import --connect jdbc:mysql://<<IP_ADDRESS_WITH_PORT>>/<<DB_NAME>>
--table utfmb_test_cases_ms --username sqoop_user --password sqoop_pwd
--hive-import --hive-table utf_ms_db.utfmb_test_cases_ms
--create-hive-table --null-string '\\N' --null-non-string '\\N'
--fields-terminated-by '|' --lines-terminated-by '\n' -m 1

-- Hive (HDFS)
select * from utfmb_test_cases_ms;
Multiple Character hp Russian л.Ñ.

我需要更改 Mysql 配置文件中的字符集和排序规则吗?通过 sqoop 导入数据时是否需要传递额外的 unicode/utf8 参数?

请提供解决方案。提前致谢!

(来自评论)

CREATE TABLE utf_test_cases_ms (
test_case varchar(50) NOT NULL,
english_lang varchar(250) NOT NULL,
language_name varchar(50) NOT NULL,
utf8_lang varchar(300) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

最佳答案

在sqoop命令中传递字符集参数

sqoop import --connect jdbc:mysql://server.foo.com/db --table bar \
--direct -- --default-character-set=latin1

关于mysql - 使用Sqoop导入Mysql UTF8数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46180902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com