Один файл экспорта DB2 с различными форматами записей фиксированной длины

Мне нужен файл заголовка/деталей, экспортированный из DB2. Все поля представляют собой удобочитаемый текст фиксированной длины. Запись состоит из части заголовка и детали переменной длины. часть заголовка имеет 15 полей. Каждая отдельная часть сведений имеет свое количество полей, скажем, от 5 до 30. Существует до 50 различных типов частей сведений и только одна часть заголовка. Файлы располагаются, начиная с части заголовка, за которой следуют n подробных частей. Это считается одной записью. В файле может быть 1..100 миллионов записей.

Прямо сейчас данные хранятся в базе данных с одной таблицей заголовков и 50 различными таблицами подробностей.

Итак, есть ли простой способ SQL сделать что-то подобное? Вот визуализация расположения записей и частей, но не так, как могли бы выглядеть записи (это просто текст поля фиксированной длины):

HEADER REC, type = 1
DETAIL type 1
DETAIL type 1
...
HEADER REC, type = 27
DETAIL type 27
...

Я хочу концептуально выполнить SELECT * FROM HEADER, а затем чередовать его с SELECT * FROM DEATAIL. Я не хочу присоединять HEADER к DETAIL, а DETAIL на самом деле представляет собой 50 разных таблиц DETAIL. Где HEADER.type -> DetailTableName.


person johnnycrash    schedule 03.08.2015    source источник


Ответы (1)


Какая платформа и версия DB2?

SQL на самом деле не поддерживает то, что вы пытаетесь сделать. На самом деле вам будет трудно получить больше анти-SQL.

Лучшее, что вы могли бы сделать, это что-то вроде этого;

select rectype, HFLD1 concat HFLD2 <...> as DTA from HDR
UNION ALL
SELECT rectype, DFLD1 concat DFLD2 <...> as DTA from DTL1
UNION ALL
<....>
ORDER BY rectype

Если вы используете DB2 для IBM i (также известную как AS/400), вы можете использовать DDS для создания многоформатного логического файла. Используя EDTCDE или EDTWRD, вы можете переопределить числовые поля в символьные. Я думаю, вы могли бы просто передать полученный LF по FTP и получить данные в нужном вам формате.

Мне давно приходилось создавать такой файл, это очень старая школа. В то время я просто использовал RPG для создания файла PF с одним большим символьным полем.

Сегодня я бы отправил заголовок/подробности в отдельные экспорты. В качестве бонуса импорт также будет проще.

person Charles    schedule 03.08.2015
comment
Не уверен в версии. Наверное лет на 5 устарел. - person johnnycrash; 03.08.2015
comment
Смогут ли DBX и типизированная иерархия сделать это? - person johnnycrash; 03.08.2015