Κατάλογος των μελών της πηγής σε ένα αρχείο με SQL

ψήφοι
7

Είναι δυνατόν να δημιουργήσει μια λίστα με όλα τα μέλη της πηγής μέσα σε ένα αρχείο προέλευσης iSeries χρησιμοποιώντας SQL;

Θα μπορούσε να είναι παρόμοιο με το να πάρει τους ορισμούς πίνακα από SYSTABLES και SYSCOLUMNS, αλλά δεν μπορώ να βρω κάτι μέχρι στιγμής.

Δημοσιεύθηκε 09/12/2008 στις 17:42
πηγή χρήστη
Σε άλλες γλώσσες...                            


7 απαντήσεις

ψήφοι
5

Περισσότεροι πίνακες και προβολές έχουν προστεθεί στον κατάλογο συστήματος από το παρουσιάστηκαν οι άλλες απαντήσεις. Τώρα, μπορείτε να πάρετε τον κατάλογο των μελών (γνωστός και ως «διαμερίσματα» σε SQL ιδίωμα) για ένα συγκεκριμένο αρχείο (γνωστός και ως πίνακας) ως εξής:

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

Μπορείτε επίσης να πάρετε άλλες πληροφορίες από SYSPARTITIONSTAT, όπως ο αριθμός των γραμμών σε κάθε μέλος, και χρονικές σφραγίδες για την τελευταία αλλαγή, να αποθηκεύσετε, να αποκαταστήσει ή να χρησιμοποιήσετε.

Απαντήθηκε 21/01/2016 στις 18:37
πηγή χρήστη

ψήφοι
4

Δυστυχώς SQL δεν ξέρει τίποτα για τα μέλη, έτσι ώστε όλα τα sourcefile-info θα μπορούσατε να πάρετε από qsys2.syscolumns είναι, ότι αποτελείται από τρεις στήλες.

θέλετε τις πληροφορίες μέλος και εγώ προτείνω τη χρήση του qshell (STRQSH) μαζί με ένα ερώτημα προς qsys2.systables ως αρχεία προέλευσης φέρουν ειδικές σημάνσεις εκεί.

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

i καθάρισε μαζί μια qshell ένα σκάφος της γραμμής για λόγους copy & paste ..

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: ρίχνει τα λάθη για Sourcefiles κάθεται άμεσα σε /QSYS.LIB, αλλά νομίζω ότι δεν θέλετε αυτά που έτσι κι αλλιώς ..

να προσέχεις! :)

Απαντήθηκε 12/12/2008 στις 12:56
πηγή χρήστη

ψήφοι
2

Μόλις χρησιμοποιηθεί αυτό, λειτουργεί μια απόλαυση.

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

Στη συνέχεια το SQL

SELECT MLNAME FROM MBRLIST
Απαντήθηκε 19/02/2015 στις 13:12
πηγή χρήστη

ψήφοι
2

Μπορείτε να γράψετε ένα πρόγραμμα CL που ανακτά τη λίστα των μελών της, χρησιμοποιώντας την εντολή DSPFD. Ίσως μπορείτε να καλέσετε αυτό το πρόγραμμα από μια αποθηκευμένη διαδικασία;

Απαντήθηκε 10/12/2008 στις 09:48
πηγή χρήστη

ψήφοι
0

Παρόμοια με την απάντηση @ john-y, μπορείτε επίσης να πάρετε μια λίστα με πηγή φυσικής μελών του αρχείου σαν αυτό:

SELECT SYSTEM_TABLE_MEMBER, SOURCE_TYPE FROM QSYS2/SYSPARTITIONSTAT WHERE
SYSTEM_TABLE_SCHEMA = 'MYLIB' AND SYSTEM_TABLE_NAME = 'QRPGLESRC'
Απαντήθηκε 07/12/2018 στις 20:57
πηγή χρήστη

ψήφοι
0

Πρέπει να βρούμε όπου ένα συγκεκριμένο μέλος πηγή βρισκόταν, το πρόγραμμα RPGLE έχει / COPY #IFSIO_H, αλλά του δεν είναι εξουσιοδοτημένα από την οποία αρχείο προέλευσης. Ως εκ τούτου, έπρεπε να γράψω μια γρήγορη QSH για να βρείτε το συγκεκριμένο μέλος προέλευσης σε όλες τις βιβλιοθήκες, αρχής γενομένης από QSYS.LIB: αυτό λειτουργεί μόνο εάν εντός του κράτους έχει το string.

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

Χρειάζεται χρόνος, το grep και να βρει υποβάλλονται σε παρτίδα

Απαντήθηκε 08/02/2017 στις 01:53
πηγή χρήστη

ψήφοι
0

Βασικά, μόνο για τη βιβλιοθήκη και πηγή αρχείο:

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

Ωστόσο, για περισσότερες λεπτομέρειες, μια διαδικασία που περιγράφεται στο αυτή τη συζήτηση .

Απαντήθηκε 02/04/2014 στις 21:50
πηγή χρήστη

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