Anmelden

View Full Version : SQL: Result als Datei speichern



Seiten : [1] 2

marty
06-04-11, 15:18
Hallo zusammen,

ich bin neu in der AS/400 Welt und arbeite mich gerade ein.
Ich möchte das Ergebnis einer Abfrage in eine Datei speichern und diese dann auf dem Win-PC ansehen.

Dazu habe ich in den Sitzungsattributen (F13) eingestellt, das die SELECT-Ausgabe in eine Datei gehen soll. Hat funktioniert, ich kann hinterher SELECT * FROM DATEI machen und das Ergebnis ist was ich erwartete.

Diese Datei hat die CCSID 13488. Übertrage ich die Datei (per ftp im bin Modus, das ist die einzige Möglichkeit an die datei ran zu kommen) an meinen PC, dann zeigt mein Editor (Notepad++) nicht an, was ich erwarte, obwohl er UCS2 können soll. Die Daten können durchaus Unicode enthalten, UCS2 ist also so falsch nicht.

Bis hierher erstmal danke für's lesen ;-)
Hier meine Frage:
Wie kann ich diese Datei in ASCII oder UTF-8 konvertieren?

Danke und Gruß
Marty

KingofKning
06-04-11, 15:25
Warum machst Du bin wenn Du ASCII haben willst?
Außerdem ist diese Codepage evtl. nicht optimal, aber da kennt sich Fürcherau besser aus

GG

marty
06-04-11, 15:31
Warum machst Du bin wenn Du ASCII haben willst?
Vergessen zu schreiben: Wenn ich ascii nehme kommt folgende Fehlermeldung:
Unable to convert data from CCSID 13488 to CCSID 819: reason 3021

andreaspr@aon.at
06-04-11, 17:05
Hallo Marty,
überträgst du die Tabelle direkt oder kopierst du sie vorher ins IFS?

Mit der CAST-Funktion in SQL kannst du alle Unicode-Felder in deine Landessprache (CCSID) konvertieren.

select cast (spalte1 as CHAR (100) ccsid 273) from test1

Fuerchau
06-04-11, 18:30
FTP ist da leider eine schlechte Lösung.
ASCII-Übertragung entfernt Unicode (sieht Tabelle 819, übrigens per CHGFTPA einstellbar) und Binärübertragung sendet die Datei mit der internen AS/400-Struktur.

Wenn du die Daten vernünftig auf dem PC haben willst, empfielt sich hier der Umweg über das IFS mittels CPYTOIMPF in UTF-8, z.B:

CPYTOIMPF FROMFILE(MYLIB/MYFILE)
TOSTMF('/Home/MyHome/MyFile.txt')
MBROPT(*REPLACE)
STMFCODPAG(1208)
RCDDLM(*CRLF)
DTAFMT(*DLM)
STRDLM(*DBLQUOTE)
RMVBLANK(*TRAILING)
FLDDLM(';')

Dann kann die Datei mit Notepad oder Excel gelesen werden.
Einfacher gehts dann noch mit Excel und Datenimport über "Daten->Externe Daten->Neue Abfrage" umd ggf. Bearbeitung in MS-Query.

FTP ist für Unicodedaten aus einer PF nicht geeignet.
IFS-Dateien kannst du natürlich problemlos übertragen.

B.Hauser
07-04-11, 07:50
Da ich weder weiß warum und wieso Du eine Tabelle direkt auf dem PC anschauen willst ...

Mit dem iSeries Navigator - Datenbanken - Eine SQL Prozedur ausführen, kannst Du das Ergebnis einer SQL-Abfrage auch direkt als *.csv oder *.xls abspeichern.

Birgitta

marty
07-04-11, 08:40
Danke sehr, es funktioniert! Genau was ich gesucht habe :-)
Jetzt noch schedulen und dann bin ich fertig, yeah!

marty
07-04-11, 08:42
Birgitta: Es geht im die Erzeugung einer Schnittstellendatei, die automatisiert jede Nacht erzeugt werden soll...

Fuerchau
07-04-11, 09:19
Das Problem für Batch ist aber noch die Anmeldung an der iSeries!
Damit kein Logon-Bild erscheint musst du per "cwblogon" Benutzer und Kennwort in den Cache schreiben, das Ganze also in ein .BAT packen.

marty
07-04-11, 09:46
@Fuerchau: Janein, ich werde den Job Scheduler der AS400 nutzen um mittels QM in ein File zu schreiben, dieses dann ins IFS zu kopieren und das wars. Meine Zielperson kann sich die Daten dann vom IFS abholen, da endet mein Part des Prozesses.

Hab mir das Scheduler-Handbuch runtergeladen und werde mir das zu Gemüte führen, kann ja so schwer nicht sein (hoffe ich).