Таленд и кодировка символов
Я использую 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