Данные запроса Talend в MySQL на основе входов от улей

StackOverflow https://stackoverflow.com//questions/25076046

  •  02-01-2020
  •  | 
  •  

Вопрос

У меня есть требование, чтобы запросить столбец в Cive и на основе вывода, которую я хочу запрашивать его в MySQL DB.

Поток - это что-то вроде ниже:

  1. Запрос Clive Таблица, получите список идентификаторов
  2. Используйте список ID для запроса MySQL.Запрос был бы похожим на select a,b,c from x where id in (list from hive)
  3. Как мне это сделать?

Это было полезно?

Решение

Вам просто нужно сделать ваш запрос, используя компонент ThiveInput, чтобы получить идентификатор, а затем у вас есть два варианта, простой способ или жесткий (и лучший) способ:

Для простого способа вы сможете запустить из компонента ThiveInput к TFLOWTOITERATE, а затем итеретен к компоненту Tmysqlinput. Ваш запрос в компоненте Tmysqlinput будет выглядеть что-то вроде:

"SELECT a, b, c
FROM x
WHERE id = '" + ((Integer)globalMap.get("row1.id")) + "'"
.

ROW1 здесь представляет собой строку, работающую в ваш TFLOWTOITERATE. Вы также можете получить эту переменную, ударяя Ctrl + Space и выбрать опцию tFlowToIterate_x.id.

Затем вы можете подключить компонент TBufferOutput к вашему компоненту Tmysqlinput, чтобы собрать все итерации, а затем прочитать его обратно с компонентом TBUFFERINPUT для дальнейшей обработки.

Это, очевидно, простое конкатенация, то есть не лучший способ для эффективности и, конечно, открыты для инъекций SQL. Но это грубый и готов.

Ваш другой (сложнее, но потенциально лучше) опция состоит в том, чтобы использовать параметризованный запрос с использованием компонента TMysqlrow (в настоящее время не поддерживается в компоненте Tmysqlinput на Talend 5.4).

Этот ответ входит в некоторые детали о параметризованных запросах в Talend как часть решения другой проблемы (эффективно выделение) Отказ Как уже упоминалось в этом ответе, более подробно описывается на параметризованные запросы на Блог Габриэле Балдассарре .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top