У меня есть конкретный запрос с объединениями и псевдонимами, и мне нужно получить имя столбца для запроса REST в Talend.

Я использую Talend Open Studio для интеграции данных 6.2, и у меня есть база данных Oracle 11g с учетной записью только для чтения. Я могу выполнить сценарии с Talend, например запрос:

select 
    u.name as "user", 
    f.name as "food", 
    e.rate 
from 
    Users as u 
    join Eval as e on u.user_id = e.user_id 
    join Food as f on e.food_id = f.food_id
where
    1 = 1

Должен дать следующий результат:

+------+--------+------+
| user | food   | rate |
+------+--------+------+
| Baba | Donuts | 16.0 |
| Baba | Cheese | 20.0 |
| Keke | Pasta  | 12.5 |
| Keke | Cheese | 15.0 |
+------+--------+------+

И я пытаюсь получить столбцы (в правильном порядке) следующим образом, используя сценарии или Talend:

+--------+
| Column |
+--------+
| user   |
| food   |
| rate   |
+--------+

Есть ли способ запросить базу данных Oracle, чтобы получить столбцы или использовать Talend для их получения?

ОБНОВИТЬ

Благодаря Marmite Bomber, был идентифицирован дубликат здесь для подхода Oracle. Теперь нам нужен Talend подход к проблеме.

3
Ceci Semble Absurde. 2 Май 2019 в 12:17

3 ответа

Лучший ответ

Вы можете попробовать это на tJavaRow, следуя вашему компоненту DBInput:

for (java.lang.reflect.Field field: row1.getClass().getDeclaredFields()) {
context.columnName = field.getName();
      System.out.println("Field name is " + context.columnName );      
           }

Обнаружен в справочном центре Talend здесь: https://community.talend.com/t5/Design-and-Development/resolved-how-to-get-the-column-names-in-a -data - поток / TD -п / 99172

Вы можете расширить это и поместить список столбцов в ваш поток вывода:

//add this inside the loop, and 'columnNames' as an output row in tJavaRow schema

             output_row.columnNames+=context.columnName+";";

С tNormalize после tJavaRow вы должны получить ожидаемый результат.

1
Corentin 9 Май 2019 в 08:05

Вот ссылка на ветку сообщества оракулов, которая должна ответить на ваш вопрос

community.oracle.com

0
user10505781user10505781 2 Май 2019 в 09:23

Я не могу написать комментарий, поэтому публикую это как ответ:

SELECT column_name
  FROM all_tab_cols
 WHERE table_name = 'table_name_here'
0
yoga 8 Май 2019 в 18:45