Таленд и кодировка символов

Я использую 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'Если я поставлю tLogRow Компонент непосредственно перед вставкой в ​​MySQL, я получаю правильный вывод: Ocythoë tuberculata а также Ocythoe tuberculata;

Я попытался напрямую вставить в базу данных:

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

И это работает, и вставляет, что е с точками правильно, и когда я делаю SELECT это показывает, что он успешно вставлен над строкой.

Но из таленда почему то заменяет ë (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    |
+--------------------------+----------------------+

1 ответ

Решение

Я рекомендую использовать набор символов utf8 и соответствующие параметры сортировки по всей доске, чтобы вы приспосабливались к каждому символу (если вам также нужны эмодзи, перейдите к utf8mb4).

Чтобы преобразовать вашу базу данных в UTF8:

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci

Вам также может понадобиться изменить кодировку сервера, если она еще не установлена ​​в utf8. Проверьте это с помощью:

SHOW VARIABLES WHERE variable_name LIKE 'char%'

Затем попросите драйвер JDBC использовать utf8 enconding. Строка подключения становится:

jdbc:mysql://:3306/fis?noDatetimeStringSync=true&useUnicode=true&characterEncoding=utf-8
Другие вопросы по тегам