DB2 Unload auf csv-Dateien Unix mit Version7
- Dieses Thema hat 3 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 12 Jahre, 9 Monaten von
Anonym.
-
AuthorPosts
-
10. Dezember 2010 um 18:04 Uhr #4109
AnonymGastHallo werte Forumsmitglieder,
ich habe folgendes Problem:
Abziehen ‚alter‘, seit 10 Jahren nicht mehr operativ genutzter Host-DB2-Tabellen zur Sicherung für den Statistik- / Revisionsbereich, so daß sie unter Unix / Windows als .txt oder .csv-Dateien ‚lesbar‘ sind.
Wir haben mehrere Versuche mit UNLOAD (noch DB-2 Version 7), Format ASCII und Konvertierung der Integer-/smallint-/decimal-Felder mittels EXTERNAL auf character-Format versucht; das Ergebnis nach einem FTP auf das Unix-System ist nicht ‚lesbar‘, weder mit Ulta-Edit (unser benutzter Texteditor) noch als .csv-Datie mit MS-Excel /MS-Access (was dem Fachbereich am liebsten wäre).
Das Datenvolumen der Tabellen liegt bei 500.000 – 60 Mio Sätze!
Wer kann mir weiterhelfen ? Was kann ich noch versuchen?
Ist evtl. der FTP der Verursacher des Problemes? Müssen hier auch Parameter angegeben / verändert werden?Mit freundlichen Grüssen
Helmut Rupprecht-Engelmann :-/
10. Dezember 2010 um 20:13 Uhr #4261
AnonymInaktivHi!
… den Verdacht hatte ich auch gleich: Ja, der FTP Parameter [highlight]SBDATACONN[/highlight] ist ausschlaggebend! Überhaupt ist dieser "Round-Trip" nicht ohne! Besser wäre sicherlich die Daten direkt an einen File Server (Windows Codepage 1252) zu übermitteln, ohne Umweg über Unix (Codepage ISO-8859).
Fragen zu Details: Mit welcher CCSID arbeitet das DB2 OS/390 (273, 500?), dann ist die Frage wie das z/OS bzw OS/390 eingestellt ist, nehmen wir mal an auch 273.
Einige FTP-Beispiele:
Von z/OS nach AIX ASCII:
//STEP1Â Â EXEC PGM=FTP,PARM='server-name.de (EXIT=16'Â Â
//SYSPRINTÂ DD SYSOUT=*Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//OUTPUTÂ Â DD SYSOUT=*Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//NETRC   DD DSN=SYS1.FTPPARM(AIXSRV),         Â
//Â Â Â Â Â Â Â Â DISP=SHRÂ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
text
CD /pfad                   Â
quote site umask 027Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
LOCSITE SBDATACONN=(IBM-273,ISO8859-1)Â Â Â Â Â Â Â Â Â Â
PUT 'HOST.DATEI.NAME' unix_file_name   Â
QUITÂ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
/*Â ÂÂ Â Â Â Â Â
Vom z/OS auf ein LAN Laufwerk:
//STEP1Â Â EXEC PGM=FTP,PARM='FSERVER.DE (EXIT=16'Â Â Â Â Â Â Â Â Â Â
//SYSPRINTÂ DD SYSOUT=*Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//OUTPUTÂ Â DD SYSOUT=*Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//NETRC   DD DSN=SYS1.FTPPARM(FSLOGIN),    Â
//Â Â Â Â Â Â Â Â DISP=SHRÂ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
CWD //FS4711/TRANSFER/DATENÂ Â Â
LOCSITE SBDATACONN=(273,1252)Â Â Â Â Â Â Â Â Â Â
text
put 'HOST.DATEI.NAME' win_file_name.csv
QUITÂ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
/* ÂAber: z/OS muß die Codepage-Konvertierungen auch unterstützen. Dazu müssen interne Tabellen geladen worden sein, die mit dem MVS Command /D UNI,ALL (z.B. im SDSF) aufgelistet werden können.
Welche DB2 Codepages sind eingestellt?!
//**********************************************
//* DSN1LOGP: LOG PRINT UTILITYÂ Â Â Â Â Â Â Â Â Â Â
//**********************************************
//STEP1Â Â EXEC PGM=DSNJU004Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//SYSPRINT DD SYSOUT=*Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//SYSABEND DD DUMMYÂ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//SYSUT1Â Â DD DSN=DB2T.BSDS01,DISP=SHRÂ Â Â Â Â Â Â
SYSTEM CCSIDSÂ Â Â Â Â Â Â
--------------------Â Â Â
ASCII SBCSÂ Â = 5348Â Â Â
ASCII MIXEDÂ = 65534Â Â Â
ASCII DBCSÂ Â = 65534Â Â Â
EBCDIC SBCSÂ = 273Â Â Â Â
EBCDIC MBCSÂ = 65534Â Â Â
EBCDIC DBCSÂ = 65534Â Â Â
UNICODE SBCS = 367Â Â Â Â
UNICODE MBCS = 1208Â Â Â
UNICODE DBCS = 1200Â Â ÂEntladen von DB2 Tables mit expliziter Codepage-Angabe:
UNLOAD TABLESPACE DSNDB06.SYSVIEWS EBCDIC CCSID(273,273,273)
Viele Erfolg & Gruß
Gernot
14. Dezember 2010 um 9:11 Uhr #4371
AnonymGastHallo Herr Ruban,
vielen Dank für Ihre Antwort. Nach Aussage unseres DB’A verwenden wir folgenden CCSID-Angaben:
— Auszug —–
die SCCSID für DB2 ASCII (SINGLE-BYTE CCSID) ist 00858.
Diese können Sie leicht in der Ladekarte ersehen.LOAD DATA INDDN SREC LOG NO RESUME YES
ASCII CCSID(00858,00000,00000)
INTO TABLE "PROD "."OBDTAB "Die beiden mit 0 angegebenen sind nicht relevant.
— Auszug Ende —-Im FTP, der mir jetzt als Copy vorliegt ist SBDATACON=(IBM-273,ISO8859-1) angegeben.
Passt das zusammen?Mit freundlichen Grüssen
Helmut Rupprecht-Engelmann
14. Dezember 2010 um 20:48 Uhr #4448
AnonymInaktivHi H. R.-E.!
Ich meine, dass das LOAD Statement bzw. die CCSID(858,…) nicht ok ist, denn diese Angabe beschreibt das Format der vorliegenden (zu ladenden) SBCS Daten, hier also ISO8859-1, die ja scheinbar von einem Unix (-Derivat) angeliefert werden.
Dass es Unterschiede zwischen Codepage 850 und ISO-8859-1 gibt, zeigt sehr deutlich die Übersicht in http://www.torsten-horn.de/techdocs/encoding.htm.
Anbei (nur in der Thread-Anischt sichtbar) eine Darstellung der Gebietscode, Codesets und Codepages.
Viele Grüße
Gernot -
AuthorPosts
You must be logged in to reply to this topic.