Мы используем приложение экстрактора, которое будет экспортировать данные из базы данных в CSV-файлы. На основе некоторой переменной условия он извлекает данные из разных таблиц, и для некоторых условий мы должны использовать UNION ALL, поскольку данные должны быть извлечены из более чем одной таблицы. Таким образом, чтобы удовлетворить условию UNION ALL, мы используем нули, чтобы соответствовать количеству столбцов.
Прямо сейчас все запросы в системе предварительно построены на основе переменной условия. Проблема заключается в том, что всякий раз, когда происходит изменение в проекции таблицы (т.е. добавляется новый столбец, модифицируется существующий столбец, удаляется столбец), мы должны вручную изменять код в приложении.
Не могли бы вы дать несколько советов, как динамически извлекать имена столбцов, чтобы любые изменения в структуре таблицы не требовали изменений в коде?
Меня беспокоит условие, которое решает, какую таблицу запрашивать. Переменная условие
как
- если условие A, загрузить из TableX
- если условие B, тогда загрузка из Таблицы A и Таблицы Y.
Мы должны знать, из какой таблицы нам нужно получить данные. Как только мы узнаем таблицу, будет просто запросить имена столбцов из словаря данных. Но есть еще одно условие: некоторые столбцы необходимо исключить, и эти столбцы различны для каждой таблицы.
Я пытаюсь решить проблему только для динамического генерирования столбцов списка. Но мой менеджер сказал мне, чтобы принимать решение на концептуальном уровне, а не просто исправить. Это очень большая система с поставщиками и потребителями, постоянно загружающими и потребляющими данные. Поэтому он хотел решения, которое может быть общим.
Так, каков наилучший способ хранения условия, имени таблицы, исключенных столбцов? Один из способов хранения в базе данных. Есть ли другие способы? Если да, что лучше? Как я должен дать хотя бы пару идей перед окончательной доработкой.
Спасибо,