9

SQL を使用して、iSeries ソース ファイル内のすべてのソース メンバーのリストを生成することは可能ですか?

SYSTABLES と SYSCOLUMNS からテーブル定義を取得するのと似ているかもしれませんが、今のところ何も見つかりません。

4

7 に答える 7

10

他の回答が提示されてから、システム カタログにさらにテーブルとビューが追加されました。これで、次のように、特定のファイル (別名テーブル) のメンバー (SQL 用語で別名「パーティション」) のリストを取得できます。

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

SYSPARTITIONSTAT各メンバーの行数や、最後の変更、保存、復元、または使用のタイムスタンプなど、他の情報を取得することもできます。

于 2016-01-21T18:37:45.373 に答える
5

残念ながら、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に直接置かれているソースファイルに対してエラーがスローされますが、とにかくそれらは必要ないと思います。

気をつけて!:)

于 2008-12-12T11:56:49.137 に答える
2

DSPFD コマンドを使用して、メンバーのリストを検索する CL プログラムを作成できます。おそらく、ストアド プロシージャからそのプログラムを呼び出すことができますか?

于 2008-12-10T08:48:44.690 に答える
2

これを使用しただけで、ごちそうになります。

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

次にSQLで

SELECT MLNAME FROM MBRLIST
于 2015-02-19T13:12:39.763 に答える
0

基本的に、ライブラリとソース ファイルのみの場合:

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

ただし、詳細については、この説明で手順が概説されています。

于 2014-04-02T20:50:53.247 に答える