Lista de miembros fuente en un archivo con SQL

votos
7

¿Es posible generar una lista de todos los miembros fuente dentro de un archivo fuente iSeries usando SQL?

Puede ser similar a obtener definiciones de tabla de SYSTABLES y SYSCOLUMNS, pero no puedo encontrar nada hasta el momento.

Publicado el 09/12/2008 a las 17:42
fuente por usuario
En otros idiomas...                            


6 respuestas

votos
5

Más tablas y vistas se han añadido al catálogo del sistema, ya se presentaron las otras respuestas. Ahora, se puede obtener la lista de miembros (también conocido como "particiones" en el lenguaje SQL) para un archivo dado (también conocido como tabla) así:

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

También puede obtener otra información de SYSPARTITIONSTATcomo el número de filas de cada miembro, y las marcas de tiempo para el último cambio, guardar, restaurar, o utilizar.

Respondida el 21/01/2016 a las 15:37
fuente por usuario

votos
4

Lamentablemente, SQL no sabe nada sobre los miembros, por lo que toda la información del archivo de origen que puede obtener de qsys2.syscolumns es que constan de tres columnas.

desea la información del miembro y sugiero usar el qshell (STRQSH) junto con una consulta a qsys2.systables ya que los archivos fuente están especialmente marcados allí.

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

Arreglé un qshell one-liner para copiar y pegar.

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                                                                            

canaliza a cada miembro que encuentra en el directorio IFS / home / myuser / myfile, también puede especificar un miembro de Sourcefile. siéntase libre de modificar sus necesidades.

PD: arroja errores para Sourcefiles directamente en /QSYS.LIB, pero creo que no los quiere de todos modos ...

¡Cuídate! :)

Respondida el 12/12/2008 a las 12:56
fuente por usuario

votos
2

Sólo se utiliza este, funciona un convite.

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

a continuación, en SQL

SELECT MLNAME FROM MBRLIST
Respondida el 19/02/2015 a las 13:12
fuente por usuario

votos
2

Puede escribir un programa CL que recupere la lista de miembros utilizando el comando DSPFD. ¿Tal vez puede llamar a ese programa desde un procedimiento almacenado?

Respondida el 10/12/2008 a las 09:48
fuente por usuario

votos
0

Lo necesito para saber dónde se encuentra un miembro fuente específica, el programa tiene RPGLE / COPIA #IFSIO_H, pero no se clasificó a partir del cual Archivo de origen. Por lo tanto, tuve que escribir una QSH rápida de encontrar el miembro fuente específica en todas las bibliotecas, a partir de QSYS.LIB: Esto sólo funciona si dentro del miembro tiene la cadena.

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

Se necesita tiempo, el grep y encontrar son sometidos a proceso por lotes

Respondida el 07/02/2017 a las 22:53
fuente por usuario

votos
0

Básicamente, para el archivo que acaba de biblioteca y fuente:

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

Sin embargo, para más detalle, un procedimiento se describe en esta discusión .

Respondida el 02/04/2014 a las 21:50
fuente por usuario

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