Lista de membros de origem em um arquivo com SQL

votos
7

É possível gerar uma lista de todos os membros de origem dentro de um arquivo de origem iSeries usando SQL?

Pode ser semelhante ao obter definições de tabela a partir SYSTABLES e SYSCOLUMNS, mas eu sou incapaz de encontrar qualquer coisa até agora.

Publicado 09/12/2008 em 17:42
fonte usuário
Em outras línguas...                            


6 respostas

votos
5

Mais tabelas e exibições foram adicionados ao catálogo do sistema desde que as outras respostas foram apresentados. Agora, você pode obter a lista de membros (aka "divisórias" na linguagem SQL) para um determinado arquivo (aka tabela) como este:

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

Você também pode obter outras informações SYSPARTITIONSTAT, como o número de linhas em cada membro, e timestamps para a última alteração, salvar, restaurar ou usar.

Respondeu 21/01/2016 em 18:37
fonte usuário

votos
4

Infelizmente SQL não sabe nada sobre os membros, para que todos os sourcefile-info que você poderia começar a partir qsys2.syscolumns é que eles consistem em três colunas.

você quer a informação membro e eu sugiro usar o qshell (STRQSH), juntamente com uma consulta para qsys2.systables como arquivos de origem são especialmente marcadas lá.

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

i bateu em conjunto um qshell one-liner para a cópia e colar fins ..

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                                                                            

Ele canaliza todos os membros que encontra ao IFS diretório / home / myuser / myFile você também pode especificar um membro SourceFile. fique à vontade para modificar as suas necessidades.

PS: ele gera erros para SourceFiles diretamente sentado em /QSYS.LIB, mas eu acho que você não quer que os de qualquer maneira ..

cuidar! :)

Respondeu 12/12/2008 em 12:56
fonte usuário

votos
2

Apenas usada isso, trabalha um deleite.

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

depois em SQL

SELECT MLNAME FROM MBRLIST
Respondeu 19/02/2015 em 13:12
fonte usuário

votos
2

Você pode escrever um programa CL que recupera a lista de membros usando o comando DSPFD. Talvez você pode chamar esse programa a partir de um procedimento armazenado?

Respondeu 10/12/2008 em 09:48
fonte usuário

votos
0

Eu preciso dele para encontrar onde um membro de origem específica foi localizado, o programa RPGLE tem / COPY #IFSIO_H, mas não é qualificado a partir do qual arquivo de origem. Por isso, eu tinha que escrever uma QSH rápida para encontrar o membro de origem específica em todas as bibliotecas, a partir QSYS.LIB: Isso só funciona se no interior dos Estados tem a string.

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

Leva tempo, o grep e encontrar são submetidos a lote

Respondeu 08/02/2017 em 01:53
fonte usuário

votos
0

Basicamente, para arquivo apenas biblioteca e fonte:

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

No entanto, para mais detalhe, um processo é descrito na presente discussão .

Respondeu 02/04/2014 em 21:50
fonte usuário

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