Как получить имена столбцов из запроса? - PullRequest
3 голосов
/ 02 мая 2019

У меня есть определенный запрос с объединениями и псевдонимами, и мне нужно получить имя столбца для запроса 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 ]

1 голос
/ 09 мая 2019

Вы можете попробовать это на 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-flow/td-p/99172

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

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

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

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

0 голосов
/ 08 мая 2019

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

SELECT column_name
  FROM all_tab_cols
 WHERE table_name = 'table_name_here'
0 голосов
/ 02 мая 2019

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

community.oracle.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...