SQL を使用して、iSeries ソース ファイル内のすべてのソース メンバーのリストを生成することは可能ですか?
SYSTABLES と SYSCOLUMNS からテーブル定義を取得するのと似ているかもしれませんが、今のところ何も見つかりません。
SQL を使用して、iSeries ソース ファイル内のすべてのソース メンバーのリストを生成することは可能ですか?
SYSTABLES と SYSCOLUMNS からテーブル定義を取得するのと似ているかもしれませんが、今のところ何も見つかりません。
他の回答が提示されてから、システム カタログにさらにテーブルとビューが追加されました。これで、次のように、特定のファイル (別名テーブル) のメンバー (SQL 用語で別名「パーティション」) のリストを取得できます。
SELECT TABLE_PARTITION FROM SYSPARTITIONSTAT
WHERE TABLE_NAME = myfile AND TABLE_SCHEMA = mylib
SYSPARTITIONSTAT
各メンバーの行数や、最後の変更、保存、復元、または使用のタイムスタンプなど、他の情報を取得することもできます。
残念ながら、SQLはメンバーについて何も知らないため、qsys2.syscolumnsから取得できるすべてのsourcefile-infoは、メンバーが3つの列で構成されているということです。
メンバー情報が必要です。ソースファイルが特別にマークされているため、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にパイプし、Sourcefileメンバーを指定することもできます。必要に応じて自由に変更してください。
PS:/QSYS.LIBに直接置かれているソースファイルに対してエラーがスローされますが、とにかくそれらは必要ないと思います。
気をつけて!:)
DSPFD コマンドを使用して、メンバーのリストを検索する CL プログラムを作成できます。おそらく、ストアド プロシージャからそのプログラムを呼び出すことができますか?
これを使用しただけで、ごちそうになります。
DSPFD FILE(Libname/Filename)
TYPE(*MBRLIST)
OUTPUT(*OUTFILE)
OUTFILE(QTEMP/MBRLIST)
次にSQLで
SELECT MLNAME FROM MBRLIST
基本的に、ライブラリとソース ファイルのみの場合:
SELECT sys_dname, sys_tname
FROM qsys2/systables
ORDER BY sys_dname, sys_tname
ただし、詳細については、この説明で手順が概説されています。