Список исходных элементов в файле с SQL

Можно ли с помощью SQL создать список всех элементов-источников в исходном файле iSeries?

Это может быть похоже на получение определений таблиц из SYSTABLES и SYSCOLUMNS, но я пока ничего не могу найти.

Если вы не получили здесь ответа, попробуйте спросить на Список рассылки MIDRANGE-L.

Mike Wills 09.12.2008 22:23
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
9
1
11 982
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Вы можете написать программу на CL, которая извлекает список членов с помощью команды DSPFD. Возможно, вы сможете вызвать эту программу из хранимой процедуры?

Ответ принят как подходящий

К сожалению, SQL ничего не знает о членах, поэтому вся информация об исходных файлах, которую вы можете получить из qsys2.syscolumns, состоит в том, что они состоят из трех столбцов.

вам нужна информация об участнике, и я предлагаю использовать qshell (STRQSH) вместе с запросом к qsys2.systables, поскольку исходные файлы специально отмечены там.

select table_schema , table_name from qsys2.systables where File_type = 'S'

Я собрал однострочник qshell для копирования и вставки ..

db2 -S "select '/QSYS.LIB/' concat table_schema concat '.LIB/' concat table_name concat '.FILE' from qsys2.systables where File_type = 'S'" | grep '/' | xargs -n1 find >/home/myuser/myfile                                                                            

он направляет каждый найденный член в каталог IFS / home / myuser / myfile, вы также можете указать член исходного файла. не стесняйтесь изменять в соответствии с вашими потребностями.

PS: он выдает ошибки для исходных файлов, находящихся непосредственно в /QSYS.LIB, но я думаю, что они вам все равно не нужны ..

заботиться! :)

В основном, только для библиотеки и исходного файла:

SELECT sys_dname, sys_tname    
FROM qsys2/systables         
ORDER BY sys_dname, sys_tname

Однако для более подробной информации процедура описана в это обсуждение.

@chappjc Просто для подтверждения - ваше изменение заключалось в форматировании операторов SQL в блоке кода и преобразовании явного URL-адреса обсуждения в гиперссылку под текстом «это обсуждение»? Приношу свои извинения за чистку форматирования.

Michael Delk 04.04.2014 17:43

да. См. исправления для просмотра изменений.

chappjc 04.04.2014 19:33

Несколько более сложная процедура описана в Возможности пользовательских табличных функций. См. Раздел, описывающий UDTF ListMember_Fnc.

user2338816 23.01.2016 02:05

Просто использовал это, это работает.

DSPFD FILE(Libname/Filename)
      TYPE(*MBRLIST)         
      OUTPUT(*OUTFILE)       
      OUTFILE(QTEMP/MBRLIST)

затем в SQL

SELECT MLNAME FROM MBRLIST

После представления других ответов в системный каталог было добавлено больше таблиц и представлений. Теперь вы можете получить список членов (также называемых «разделами» на языке SQL) для данного файла (он же таблица) следующим образом:

SELECT TABLE_PARTITION FROM SYSPARTITIONSTAT
WHERE TABLE_NAME = myfile AND TABLE_SCHEMA = mylib

Вы также можете получить другую информацию из SYSPARTITIONSTAT, такую ​​как количество строк в каждом элементе и отметки времени для последнего изменения, сохранения, восстановления или использования.

Это информация, которую я искал сегодня. Спасибо.

Alan Hoover 16.03.2016 23:22

Мне нужно, чтобы найти, где находится конкретный исходный элемент, программа RPGLE имеет / COPY #IFSIO_H, но не определяет, из какого исходного файла. Поэтому мне пришлось написать быстрый QSH, чтобы найти конкретный элемент-источник во всех библиотеках, начиная с QSYS.LIB: Это работает, только если в элементе есть строка.

find '/QSYS.LIB/' -name '*.MBR' -exec  grep -rins  '#IFSIO_H'  {} \; 

Требуется время, grep и find отправляются в пакетную обработку

Подобно ответу @ john-y, вы также можете получить список членов исходного физического файла следующим образом:

SELECT SYSTEM_TABLE_MEMBER, SOURCE_TYPE FROM QSYS2/SYSPARTITIONSTAT WHERE
SYSTEM_TABLE_SCHEMA = 'MYLIB' AND SYSTEM_TABLE_NAME = 'QRPGLESRC'

Другие вопросы по теме