-
Eine IFS-Datei ist ein langer String und hat eigentlich keine Zeilen.
Wenn Du allerdings Umbrüche mit CRLF in deiner IFS-Datei hast und darauf basierend die Zeilen ermitteln willst, warum verwendest Du dann nicht einen einfachen Count(*) in Verbindung mit dem IFS_READ?
Code:
Select Count(*) from Table(IFS_READ(...));
Andreas Prouza wird wahrscheinlich auch ein Beispiel mit Regular-Expressions bringen, in dem die CRLFs abgezählt werden.
... auf alle Fälle gibt es keinen IBM Service, mit dem die Anzahl der "Zeilen" in einer IFS-Datei ermittelt werden kann (zumindest ist mir keiner bekannt)
Birgitta
-
Ich bin im embedded SQL unterwegs (prepare, execute…) Damit bekomme ich das mit dem IFS_READ einfach nicht hin. Der Name des Pfads kommt per Variable .
-
Wenn es eine CHAR Variable ist (und keine VARCHAR) musst du den Pfad mit TRIM die Blanks wegschneiden.
lg Andreas
-
Ich bin im embedded SQL unterwegs (prepare, execute…) Damit bekomme ich das mit dem IFS_READ einfach nicht hin. Der Name des Pfads kommt per Variable .
Was für einen Fehler bzw. SQLCODE bekommst Du denn an welcher Stelle?
Kann das (aufbereitete) SQL Statement mit ACS - Run SQL Scripts korrekt ausgeführt werden?
Wenn Du mit dynamischem SQL, also PREPARE und EXECUTE arbeitest, musst Du natürlich auch dafür sorgen, dass alle Hochkommata im String verdoppelt werden, also auch vor und nach der IFS-Datei!
Also etwa so:
Code:
DynSQLStmt = 'Select * from Table(IFS_Read(''' + %Trim(YourIFSFile) + '''))';
Du solltest auf alle Fälle prüfen, ob dynamisches SQL überhaupt notwendig ist. Nach meiner Erfahrung können über 90% aller SQL Statements in embedded SQL statisch gehandelt werden.
... und ich hab' in meinem Leben schon jede Menge (embedded) SQL Programme geschrieben.
-
Der Witz an dem Count der CR einer IFS-Datei ist, dass das Zählen genau so lange dauert wie das Verarbeiten. Von Vorteil ist das nicht gerade.
-
 Zitat von B.Hauser
Andreas Prouza wird wahrscheinlich auch ein Beispiel mit Regular-Expressions bringen, in dem die CRLFs abgezählt werden.
Klar, kann ich machen :-)
exec sql set :variable = regexp_count(GET_CLOB_FROM_FILE('/verzeichnis/file.txt'), X'0D'))
Der HEX Wert hängt vom Typ des Files ab, welcher HEX Wert für die Zeilenbegrenzung verwendet wird.
Bei großen Files ist auch hier die Variante mit regex um mehr als 10 Mal schneller als das IFS_READ.
lg Andreas
Similar Threads
-
By tarkusch in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 02-06-14, 10:45
-
By NEWSolutions Redaktion in forum NEWSolutions artikel
Antworten: 0
Letzter Beitrag: 05-12-13, 19:03
-
By mott in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 18-09-02, 16:42
-
By Ludger Muhmann in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 30-07-02, 10:49
-
By Stefan_R in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 12-10-01, 10:47
Tags for this Thread
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