mysql - Talend 和字符编码

标签 mysql etl talend collate

我正在使用 talend 将数据从旧数据库传输到新数据库。旧数据库是 PostgreSQL,新数据库是 MySQL。

但我有问题,因为在旧数据库中有这些行:

id      lft     rgt     rank_id    name_sci
------------------------------------------------------
6530    6137    6138    88         Ocythoë tuberculata
6340    6127    6128    88         Ocythoe tuberculata

注意e上面的两个点

所以我有

tPsqlInput --> tFilterRow --> tMap --> tMysqlOutput

但是,我收到错误:Duplicate entry 'Ocythoe tuberculata' for key 'bio_taxons_name_sci_unique' 如果我在插入 MySQL 之前放置 tLogRow 组件,我会得到正确的输出:Ocythoe tuberculataOcythoe tuberculata;

我试过直接插入数据库:

into bio_taxons (name_sci, created_by, taxonomic_rank_id ) values ('Ocythoë', 1, 10);

它起作用了,并且正确地插入了带点的 e,当我执行 SELECT 时,它表明它已成功插入到行上方。

但出于某种原因,talend 将 ë(e 有两个点)替换为普通的 e(没有点)。

我不知道如何解决这个问题。我曾尝试编辑 MySQL 连接,但似乎没有任何效果:

这是当前的 mysql 连接字符串:

jdbc:mysql://:3306/fis?noDatetimeStringSync=true&characterEncoding=Cp1252

我试过使用值“utf8”、“utf-8”、“latin1”、“utf8mb4”,但都没有用...

同样在 mysql 中:

mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| latin1                   | latin1_swedish_ci    |
+--------------------------+----------------------+

最佳答案

我建议全面使用 utf8 字符集和相应的排序规则,以便您适应每个字符(如果您还需要表情符号,请选择 utf8mb4 )。

为了将您的数据库转换为 UTF8:

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci

如果尚未使用 utf8,您可能还需要更改服务器编码。检查它:

SHOW VARIABLES WHERE variable_name LIKE 'char%'

然后指示 JDBC 驱动程序使用 utf8 编码。您的连接字符串变为:

jdbc:mysql://:3306/fis?noDatetimeStringSync=true&useUnicode=true&characterEncoding=utf-8

关于mysql - Talend 和字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49258751/

相关文章:

java - Talend tJava 自定义代码 "cannot be resolved to a type"与 tLibraryLoad

php - 如何从表中选择所有行?

c++ - 程序在前台工作,但不在后台使用 nohup

mysql - 修剪剩余空间数据库

sql - 在 SSIS 表达式中,我们如何只存储 getdate() 中的日期

mysql - 当我终止作业并再次运行时,Talend 作业截断记录

javascript - Nodejs MySQL 循环中的多个查询

amazon-web-services - 如何使用 AWS Glue 从 S3 导入 JSON 数据?

sql-server - SSIS 条件拆分 - 条件设置

hadoop - 无法获取 Master Kerberos 主体以用作 Talend 批处理作业的更新程序