Datenexport in ASCII
- Dieses Thema hat 8 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 17 Jahre, 4 Monaten von
Anonym.
-
AuthorPosts
-
5. Mai 2006 um 10:30 Uhr #2685
AnonymInaktiv???
Hallo
Aus einer DB2 Großrechnertabelle möchte ich eine ASCII Flatefile erstellen.1. Bitte genau die Syntax ausschreiben.
Mit UNLOAD hat nicht geklapt
PC-DB2 Export läuft auf Großrechner vermutlich nicht.2. Das Problem ist noch komplizierter, weil die Daten gepackt gespeichert sind. Also man müste bei dem Unload noch entpacken.
3. zusätzlich brauche ich einen JCL Job, der das jede Nacht ausführen wird.
Für jede Info werde ich dankbar.
Danke.Johann
5. Mai 2006 um 11:12 Uhr #3089
AnonymInaktivHallo Johann,
welche DB2-Version verwendest Du auf dem Grossrechner ?
Wie sind die Daten gepackt ? ( selbstgeschriebene Routine, Tablespace mit COMPRESS=YES … Â ? )welche Probleme/Fehlermeldung hattest Du beim UNLOAD ?
ein Unload mit:
UNLOAD DATA FROM TABLE creator.name  HEADER NONE  ASCII Â
sollte eigentlich funktionieren.
Die JCL dazu wäre:
//UTIL EXEC DSNUPROC,SYSTEM=???,UID=‘??utility-id‘,
// Â Â UTPROC=“ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//* Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//SYSREC Â DD DSN=flat-file-name,DISP=(,CATLG),SPACE …. Â Â Â Â Â Â Â Â
//SYSPUNCH DD DUMMY
//SYSIN DD * Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
 UNLOAD DATA FROM TABLE creator.table HEADER NONE  ASCII
//*Grüsse
Uli
5. Mai 2006 um 13:45 Uhr #3377
AnonymInaktiv😉
Hallo Ulli,Auf der Großrechnerseite haben wir:
z800
OS390 V2.10
DB2 V 7.1Mit dem Packen habe ich meine Großrechner-Kollegen Verstanden, dass dort gepackte Felder im Sinne von COMP-3 gespeichert wurden.
Inzwischen habe ich nachgehakt und vermute, dass unlesbare OUTPUT ist einfach ein binäres UNLOAD (unlesbar in einem EBCEDIC Editor)
Wenn ich UNLOAD ….. ASCII machen würde und vom Großrechner mittels PUT ‚Großrechner.Datei‘ c:Pc-Datei.txt binär auf dem FTP Server übertragen würde, müsste ich Erfolg haben.
Leider konnte ich das jetzt nicht ausprobieren, weil der Großrechner ausgefallen ist.
Ich werde es am Montag machen und bei Problemen mich noch mal melden.Danke
Johann
7. Mai 2006 um 7:58 Uhr #3556
AnonymInaktivHi Johann,
wenn die numerischen Daten "lesbar" sein sollen, hilft die Angabe EXTERNAL in den Feld-Spezifikationen, z.B.
SPALTE_1 INTEGER EXTERNAL,
SPALTE_2 DEC(5,2) EXTERNAL, …MfG
AxelP
8. Mai 2006 um 7:29 Uhr #3682
AnonymInaktivHallo Axel,
danke für die Info.
Dieser Vorschlag habe ich schon in so einer Form bekommen://SYSIN DD *
UNLOAD TABLESPACE EINKAUF.TSARTIKE
PUNCHDDN SYSPUNCH
UNLDDN SYSREC
NOPAD
FROM TABLE MYFIRMA.ARTIKEL
HEADER NONE
(
PREFIX POSITION(*) INTEGER EXTERNAL(2),
SUFFIX POSITION(*) INTEGER EXTERNAL(3),
WBMTL POSITION(*) CHAR(1),
GROESSE POSITION(*) CHAR(3),
usw….
)Dies aber ist unakzeptable weil bei Änderung der Felder in den Tabellen, müssen auch die JCL Jobs geänder werden.
Trotzdem viellen Dank.
Johann
8. Mai 2006 um 8:35 Uhr #3772
AnonymInaktivHallo Uli
ich habe aus der ISPF oberfläche die DB2 /SPUFI ausgewählt und den vorgeschlagenen Befehl abgesetzt. Leider liefert er einen Fehler:
UNLOAD DATA FROM TABLE MYFIRMA.ARTIKEL HEADER NONE ASCII
———+———+———+———+———+———+———+-
DSNT408I SQLCODE = -199, ERROR: ILLEGAL USE OF KEYWORD FROM, TOKEN IS
<HEXSTRING> <CHARSTRING> <GRAPHSTRING> WAS EXPECTED
DSNT418I SQLSTATE = 42601 SQLSTATE RETURN CODE
DSNT415I SQLERRP = DSNHPARS SQL PROCEDURE DETECTING ERROR
DSNT416I SQLERRD = 0 0 0 -1 13 0 SQL DIAGNOSTIC INFORMATION
DSNT416I SQLERRD = X’00000000′ X’00000000′ X’00000000′ X’FFFFFFFF
X’0000000D‘ X’00000000′ SQL DIAGNOSTIC INFORMATION
———+———+———+———+———+———+———+-
DSNE618I ROLLBACK PERFORMED, SQLCODE IS 0
DSNE616I STATEMENT EXECUTION WAS SUCCESSFUL, SQLCODE IS 0
———+———+———+———+———+———+———+-
DSNE601I SQL STATEMENTS ASSUMED TO BE BETWEEN COLUMNS 1 AND 72
DSNE620I NUMBER OF SQL STATEMENTS PROCESSED IS 1MfG
Johann
8. Mai 2006 um 10:12 Uhr #3830
AnonymInaktivHallo Johann,
bei dem UNLOAD-Befehl handelt es sich um ein Utility-Control-Statement und nicht um ein (mit Spufi ) ausführbares SQL-Statement.
Du kannst es daher nicht über das DB2I-Panel ausführen, sondern nur als Batch-Job
Die JCL dazu wäre:
//UTIL EXEC DSNUPROC,SYSTEM=???,UID=‘??utility-id‘,
// Â Â UTPROC=“ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//* Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//SYSREC Â DD DSN=flat-file-name,DISP=(,CATLG),SPACE …. Â Â Â Â Â Â Â Â
//SYSPUNCH DD DUMMY
//SYSIN DD * Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
 UNLOAD DATA FROM TABLE creator.table HEADER NONE  ASCII Â
//*Aber im Prinzip entspricht es dem UNLOAD-Statement, das Du um 9:29 Uhr gepostet hast
mfg
Uli
8. Mai 2006 um 13:17 Uhr #3865
AnonymInaktivHallo Uli,
Hallo Axel,mit dem Zusatz EXTERNAL funktioniert die ganze Sache.
Muss das pro Feld eingegeben werden oder ist es möglich so zu sagen " globalen EXTERNAL" zu setzen, mit dem alle Felder "lesbar" würden?Danke
Johann
8. Mai 2006 um 16:14 Uhr #3894
AnonymInaktivich fürchte, das muss pro Feld definiert werden.
-
AuthorPosts
You must be logged in to reply to this topic.