Liste der Quellelemente in einer Datei mit SQL

stimmen
7

Ist es möglich, eine Liste aller Quellelemente innerhalb einer iSeries-Quelldatei mit SQL zu generieren?

Könnte ähnliche Tabellendefinitionen aus SYSTABLES und SYSCOLUMNS, aber ich bin nicht in der Lage, etwas zu finden, so weit zu bekommen.

Veröffentlicht am 09/12/2008 um 17:42
quelle vom benutzer
In anderen Sprachen...                            


7 antworten

stimmen
5

Weitere Tabellen und Ansichten wurden das System Katalog aufgenommen, da die anderen Antworten präsentiert wurden. Jetzt können Sie die Liste der Mitglieder (auch bekannt als „Partitionen“ in SQL parlance) für eine bestimmte Datei (aka Tabelle) wie folgt erhalten:

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

Sie können auch andere Informationen aus bekommen SYSPARTITIONSTAT, wie die Anzahl der Zeilen in jedem Mitglied, und Zeitstempel für die letzte Änderung, speichern, wiederherstellen oder verwenden.

Beantwortet am 21/01/2016 um 18:37
quelle vom benutzer

stimmen
4

Leider SQL weiß nichts über die Mitglieder, so dass alle die Quell-Informationen, die Sie von qsys2.syscolumns bekommen könnte, ist, dass sie aus drei Säulen bestehen.

Sie wollen das Mitglied info und ich schlage vor, die QShell (STRQSH) zusammen mit einer Abfrage qsys2.systables Verwendung als Quelldateien speziell dort markiert sind.

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

i gerädert einen QShell Einzeiler für Copy & Paste Zwecke zusammen ..

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                                                                            

es Rohre jedes Mitglied es findet im IFS-Verzeichnis / home / myuser / myfile Sie auch ein Quell Mitglied angeben könnte. fühlen Sie sich frei, um Ihren Bedarf zu ändern.

PS: es wirft Fehler für Quelldateien direkt in /QSYS.LIB sitzen, aber ich glaube, Sie wollen nicht diejenigen sowieso ..

Pass auf! :)

Beantwortet am 12/12/2008 um 12:56
quelle vom benutzer

stimmen
2

Gerade diese verwendet, funktioniert es ein Genuss.

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

dann in SQL

SELECT MLNAME FROM MBRLIST
Beantwortet am 19/02/2015 um 13:12
quelle vom benutzer

stimmen
2

Sie können ein CL-Programm schreiben, das die Liste der Mitglieder mit dem DSPFD Befehl abruft. Vielleicht können Sie das Programm aus einer gespeicherten Prozedur aufrufen?

Beantwortet am 10/12/2008 um 09:48
quelle vom benutzer

stimmen
0

Ähnlich wie @ john-y Antwort, können Sie auch eine Liste der physischen Quelldatei Mitglieder wie diese:

SELECT SYSTEM_TABLE_MEMBER, SOURCE_TYPE FROM QSYS2/SYSPARTITIONSTAT WHERE
SYSTEM_TABLE_SCHEMA = 'MYLIB' AND SYSTEM_TABLE_NAME = 'QRPGLESRC'
Beantwortet am 07/12/2018 um 20:57
quelle vom benutzer

stimmen
0

Ich brauche es, zu finden, wo ein bestimmte Quelle Element angeordnet wurde, das RPGLE Programm / COPY #IFSIO_H, aber es ist nicht von welcher Quelldatei qualifiziert. Daher hatte ich eine schnelle QSH zu schreiben, um das spezifische Quelle Mitglied in allen Bibliotheken zu finden, die von QSYS.LIB Start: Dies funktioniert nur, wenn sie innerhalb des Mitglied die Zeichenfolge hat.

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

Es braucht Zeit, die grep und finden werden zu Charge vorgelegt

Beantwortet am 08/02/2017 um 01:53
quelle vom benutzer

stimmen
0

Im Grunde genommen nur für Bibliothek und Quelldatei:

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

Allerdings, für weitere Einzelheiten, ein Verfahren wird in skizziert diese Diskussion .

Beantwortet am 02/04/2014 um 21:50
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more