-
CRTPF ohne DDS erstellt immer mit CCSID *HEX (65535).
CREATE TABLE per SQL erstellt bei Zeichenfeldern grundsätzlich mit CCSID, da diese auf Feldebene angegeben wird.
*HEX muss man explizit angeben oder man verwendet binary Felder.
Am Besten eignet sich da QM-Query, da diese zur Laufzeit auch eine Ausgabedatei erstellen können. Hier wird SQL verwendet und somit auch mit CCSID gearbeitet.
Für dein Spoolproblem könnte die Lösung ja nun so aussehen:
CRTPF in QTEMP mit CCSID 65535
CPYSPLF
STRQMQRY QMQRY(MYSQL) OUTPUT(*OUTFILE) OUTFILE(QTEMP/MYOUT)
CPYTOIMPF
Der QMQRY MYSQL kann dann direkt deinen Select enthalten.
Wenn du willst, kannst du auch Parameter verwenden um den Dateinamen z.B. dynamisch zu haben:
select ....
from &myfile
STRQMQRY ... SETVAR((MYFILE 'QTEMP/MYSPLF'))
Wenn du nun mehrere Spools zu einer Ausgabe zusammenfassen musst, kannst du beim 1. QMQRY OUTMBR(*FIRST *REPLACE) und in den folgenden OUTMBR(*FIRST *ADD) angeben. *REPLACE/*ADD kannst du auch in eine Variable packen.
In einem anderen Thread hat einer getestet, dass bei großen Datenmengen die CSV-Aufbereitung in SQL schneller ist, als im CPYTOIMPF.
Ausserdem ist man ggf. variabler was die Vornullen oder für Excel die Zeichenbehandlung angeht:
char(feld) <= linksbündig ohne Vornull
digits(feld) <= mit Vornull, allerdings ohne Komma, kann man aber mit substr() aufteilen.
Auch die Interpretation von Numerisch als Zeichen für Excel kann in SQL gelöst werden:
'''' concat digits(mynum) concat ';' <= man beachte die 4 Hochkomma
Die PF enthält dann bereits das CSV-Format, man kann es schön testen und anschließend reicht ein CPYTOSTMF, der eben schneller als CPYTOIMPF ist.
-
Hi
also ich habe jetzt mal wieder etwas gelernt: QMQRY
Link: iSeries / AS400 FAQ: How can I get started with QMQRY (Query Management Query)?
habe mein CL wie folgt angepasst:
PGM
DLTF FILE(QTEMP/SPOOL_QM)
MONMSG MSGID(CPF0000)
DLTF FILE(QTEMP/SPOOL_AUS)
MONMSG MSGID(CPF0000)
RMVLNK OBJLNK('/HOME/USER/spool.cSV')
MONMSG MSGID(CPF0000)
CRTPF FILE(QTEMP/SPOOL_QM) RCDLEN(132)
CPYSPLF FILE(QPRTSPLQ) TOFILE(QTEMP/SPOOL_QM) +
JOB(151353/USER/QPADEV0099) SPLNBR(4)
STRQMQRY QMQRY(LIB/QRY) OUTPUT(*OUTFILE) +
OUTFILE(QTEMP/SPOOL_AUS)
CPYTOIMPF FROMFILE(QTEMP/SPOOL_AUS) +
TOSTMF('/HOME/USER/SPOOL.CSV') +
MBROPT(*REPLACE) STMFCODPAG(*PCASCII) +
RCDDLM(*CRLF)
ENDPGM
leider bekomme ich immer noch die gleichen fehlerhaften Zeichen.
Es muss aber an der CSSID liegen.
Hilfe.
-
wenn ich
CRTPF FILE(QTEMP/TEST) RCDLEN(132)
und dann
upddta
und dann
CPYTOIMPF
kommt auch Müll raus.
-
Ist doch kein Wunder, da CPYTOIMPF eine CCSID braucht. Verwende in diesem Fall CPYTOSTMF ... STMFCODPAG(1252).
-
ja da hast du af jedenfall recht.
Ich habe nur das Problem das er dann meckert, weil ich mehr als drei felder habe.
ich suche die fehlermeldung nochmal
-
Externbeschriebene dateien oder Physische Dateien mit mehr oder weniger als drei Felder werden von diesem Befehl nicht unterstützt.
Das kommt leider bei diesem befehl als Antwort.
-
Ich habe nun mal folgendes gemacht:
CRTPF FILE(QTEMP/XTEST) RCDLEN(132)
CPYSPLF FILE(QSYSPRT) TOFILE(QTEMP/XTEST)
CPYTOSTMF FROMMBR('/qsys.lib/qtemp.lib/xtest.file/xtest.mbr') TOSTMF('/home/fuerchau/xtest.csv') STMFOPT(*REPLACE) DBFCCSID(273) STMFCODPAG(1252)
Die Datei wurde anstandlos im IFS erstellt und kann mit Windows angezeigt werden.
Ich weiß nicht, was du da falsch machst.
-
Hmm,
geht bei mir auch. Ich muss nur den Parameter STMFCODPAG(*PCASCII) einstellen dann sieht es super aus.
Das Problem bei mir ist das ich eine Datei per QRY erstlle. Das QRY fragt eine Kopierte spool datei ab die nur eine Variable hat in der länge 132. Um das ganze ein wenig zu sortieren jage ich die einmal durch ein QRY und bekomme eine schön sortierte datei heraus die 8 Felder hat. Und wenn ich die mit exakt dem gleichen CPYTOIMPF ins IFS schiebe ist sie im eimer.
Das macht mich fertig!
-
cpytostmf geht nicht bei mehr oder weniger als drei feldern, wenn die Datei extern beschrieben wird z.b qry
-
Wie sieht dein CPYTOIMPF denn genau aus ?
Wie steht ggf. die CCSID deines Jobs und der Datei ?
-
Warum nimmst du nicht den QMQRY ?
-
Ich mache das mit RUNQRY QRY(&QRY) OUTTYPE(*OUTFILE) OUTFILE(&QRY/QTEMP)
Dieses File kann man dann mit CPYTOIMPF kopieren.
Ab V6.1 kann man angeblich auch Header ausgeben, wenn ich mich nicht irre.
Allerdings ist CSV für EXCEL nicht ideal geeignet(eigenmächtige Änderung des Datentyps bei automatischem Öffnen)
Similar Threads
-
By System_Error_1 in forum NEWSboard Drucker
Antworten: 7
Letzter Beitrag: 22-09-09, 08:39
-
By Asti in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 26-10-06, 14:29
-
By SelfPity in forum NEWSboard Windows
Antworten: 16
Letzter Beitrag: 21-10-06, 17:45
-
By y-tom in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 24-05-06, 13:59
-
By cassandra in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 26-10-04, 15:54
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks