Anmelden

View Full Version : 65k Dateifeld oder wie lese ich eine Datei direkt aus dem IFS ein.



Seiten : 1 2 3 4 5 [6]

labm
23-07-21, 08:16
Die Datei in IFS hat 1252
wie muss ich die Atributte anpassen?

ich versuche es per RDI zu machen nur so kann ich die Zeichen richtig alle sehen.

Job hat CCSID 1141

labm
23-07-21, 08:22
ich richtig, habe ich nicht gesehen sorry:


> Select Ordinal_Position as RowKey, cast(Element as varchar(2000) ccsid 1208) from Table(SysTools.Split (Cast(Get_clob_From_File('/chguser/xxx/upload/idn_tek2.csv'), x'0D25') as CLOB(2M) CCSID 1208) ) a Where Trim(Element) > ''

SQL State: 42601
Vendor Code: -104
Message: [SQL0104] Token , ungültig. Gültige Token: AS. Ursache . . . . : Bei Token , wurde ein Syntaxfehler entdeckt. Token , ist kein gültiges Token. AS ist eine Teilliste gültiger Token. Diese Liste geht davon aus, dass die Anweisung bis zu diesem Token korrekt ist. Es kann eine frühere Stelle in der Anweisung fehlerhaft sein, aber bis zu dieser Stelle scheint die Syntax gültig zu sein. Fehlerbeseitigung: Einen der folgenden Schritte durchführen und die Anforderung wiederholen: - SQL-Anweisung im Bereich des Token , überprüfen. Anweisung korrigieren. Der Fehler kann ein fehlendes Komma oder Anführungszeichen sein, er kann in einem falsch geschriebenen Wort oder in der Anordnung der Klauseln begründet sein. - Ist das fehlerhafte Token <ANWEISUNGSENDE>, die Anweisung korrigieren, da sie mit einer ungültigen Klausel endet.

B.Hauser
23-07-21, 08:28
Die Syntax ist immer noch nicht korrekt.
Die richtige Syntax müsste so aussehen:


Select Ordinal_Position As Rowkey,
Cast(Trim(Element) As Varchar(2000) Ccsid 1208)
From Table (
Systools.Split(
Cast(Get_Clob_From_File('/chguser/xxx/upload/idn_tek2.csv') As Clob(2M) CCSID 1208),
x'0D25'
)
) A
Where Trim(Element) ...

labm
23-07-21, 08:54
nach dem ich dem job auf Translate ccsid 65535 geändert habe hat es funktioniert.

Aber die umlaute sind immer noch nicht da.

615

Fuerchau
23-07-21, 09:30
Natürlich sind die Umlaute da. Sie sind nur in UTF8 kodiert und so dann nicht zu sehen.
Das sind die komischen Sonderzeichen die da im Text zu sehen sind.
Wenn du die Daten nun im Programm verarbeiten willst, musst du 1208 in 1200 casten und im ILERPG das Feld vom Typ "C" definieren (UCS2).

Warum machst du das (nochmal) so kompliziert?
Laut deinen Daten handelt es sich um eine CSV-Datei.
D.h., du erstellst eine PF (SQL oder DDS) in passender Definition (Zeichen, Zahlen, Datum) und importierst dann einfach per CPYFRMIMPF.
Dann hast du die Daten fertig für die Verarbeitung.

labm
23-07-21, 12:25
Hallo,

vielen Dank.
Ich habe noch nicht probiert.

Warum so komliziert... Ich würde mal gerne CSV Datei direkt lesen ohne irgendwlscher Dateien wo man die Daten vorher reinkopieren muss.
Lesen
Verarbeiten
Fertig..

labm
23-07-21, 12:49
616
Es wird bei SQL trotz dem immer noch falsch umgesetzt. Siehe Bild.
Ich glaube, ich mache es per CPYFRMSTMF ich denke das es zuverässiger ist.

Fuerchau
23-07-21, 13:24
Wenn ich das Bild ansehe, so wird da ein UTF8-Code für ein Umlaut ausgegeben.
Ggf. wird bei der SQL-Anzeige nicht von UTF8 in eine lesbare Anzeige umgewandelt.

Außerdem habe ich oben schon mal geschrieben, dass der CPYFRMIMPF das generell besser kann:
Korrekte Typwandlung in
- Dezimal mit/ohne Vorzeichen und korrekten Nachkomma
- Datum ISO/EUR...
- NULL's
- Trim Blanks Anfang/Ende
- Entfernen Kopfzeile
- Korrekte Behandlung Stringdelimiter, z.B. "Äpfel;Birnen" fürt bei deinem SQL zu Fehlern.

Bevor ich mir da selber die Finger breche nehme ich gleich den CPYFRMIMPF, zumal der auch noch eine Fehlerprotokoll-Datei kann.
Mit deinem Problem wäre ich in 10 Minuten fertig;-).