Перенос данных Talend Open Studio с MySQL на родительско-дочерних отношениях - PullRequest
1 голос
/ 15 марта 2019

Я использую Talend Open Studio для переноса данных, так как я обновляю существующую архитектуру приложения до новой.Я использую MySQL в обоих приложениях, но с другой схемой.Я успешно перенес данные между отдельными таблицами, но в то время как я переношу данные из одной таблицы в таблицу отношений родитель-потомок с ограничением внешнего ключа, передача данных чрезвычайно медленная.Например, я перевожу свою таблицу городов в города и города. Ниже приведена схема для них:

Моя старая схема:

CITIES (
  id   
  city_name
  status
  created_at
)

Недавно созданная схема, куда мне нужно перенести данные:

CITIES (
  id   
  status
  created_at
)

CITIESI18N (
  id           
  lang_code
  name
  fk_city_id      (// foreign key of cities table)
)

Ниже приведены снимки из моих заданий Talend:

enter image description here

А вот конфигурация tmap:

enter image description here

Теперь, когда я передаю данные без внешнего ключа, результат получается очень быстрым.См. Ниже:

enter image description here

Но то же самое, когда я передаю с помощью внешнего ключа, моя передача очень медленная:

(Примечание: я взял таблицу провинции, например, так как она похожа на таблицу городов)

enter image description here

Я думаю, что с ограничением внешнего ключа оно должноиндексировать столбцы при передаче данных, делая его медленнее, но я не уверен.Можно ли как-то это исправить, так как у меня много таблиц, похожих на эту, которые нужно перенести.Мне просто любопытно узнать причину.

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Вы загружаете данные для родителя и ребенка одновременно . Используя один Tmap. Когда вы вставляете внешний ключ во вторую таблицу, также выполняется вставка во внешнюю / родительскую таблицу. В качестве альтернативы вы можете сделать следующее: сначала загрузить данные в основную таблицу CITIES , затем на SubJobOk, загрузить в дочернюю / CITIESI18N таблицу. Это было бы быстрее. Дайте мне знать, если это работает.

0 голосов
/ 19 марта 2019

Я не знаю, почему у вас такое поведение: вы можете попытаться перенаправить 'provience_i18n' к tHashOutput (компонент кэша), а затем связать с подзадачей с помощью tHashInput (ссылка на ваш tHashOutput) -> tMySQLOutput.У вас будет 2 подзадачи, по одной на каждую вставку.

...