Textdateien automatisiert zusammenfassen

Community help and discussion for RapidRep Designer Application

Textdateien automatisiert zusammenfassen

Postby anja.hennig » 20 Jan 2017, 13:02

Ich möchte fixed lengths Textfiles aus einem Ordner zusammenfassen und dann per SQL ausgeben für einen Vergleich.

Dies sollte ungefähr so aussehen

#set($test = $FileSystem.getFiles('C:\Users\Desktop\test\*.sts'))



#set($instanceGDH = $FG_GDH.getNewInstance($test)))

SELECT
*
FROM
$instanceGDH

Leider funktioniert dies so nicht. Können Sie mir hier bitte weiterhelfen?
anja.hennig
 
Posts: 14
Joined: 18 Jan 2017, 11:59

Re: Textdateien automatisiert zusammenfassen

Postby Donald72 » 20 Jan 2017, 13:57

Hallo,
mehrere (strukturell gleiche) CSV/Fixed Length/XML-Dateien können ab 5.7.2 recht einfach zusammengefasst werden.
War es vorher nur möglich über eien #foreach - Schleife und einem "UNION ALL", erlaubt die neue FILE-API einen wesentlich einfacheren Weg.

Die #set-Anweisung sammelt alle Dateien ein, die dem Muster entsprechen. Der 2. Parameter (hier die 0) bestimmt die Rekursionstiefe, bis zu der die Dateien gesucht werden.

#set( $files = $FileSystem.getFileDescriptors("C:\temp\*.csv",0))

SELECT * FROM $MyCSVStructure.getNewInstance($files).Data().TABLE()

Übrigens: diese Methode ist sehr schnell, ca. 20% schneller als die Variante mit #foreach und UNION ALL
Donald72
 
Posts: 11
Joined: 17 Nov 2012, 22:01

Re: Textdateien automatisiert zusammenfassen

Postby anja.hennig » 23 Jan 2017, 13:53

Vielen Danke!
Ist es auch möglich, den Dateinamen mit im Ergebnis pro Zeile ausgeben zu lassen anstatt der ID? (File ID wird automatisiert geniert in der Dateistruktur)

Ich habe es mit einem Innerjoin auf die _FILE_ID probiert. Leider bekomme ich hier eine leere Menge.
Mein Versuch:
SELECT * FROM $MyCSVStructure.getNewInstance($files).Data().TABLE() links
JOIN $MyCSVStructure.getNewInstance($files).FILE_INFO_() rechts
on links._FILE_ID = rechts_FILE_ID.
anja.hennig
 
Posts: 14
Joined: 18 Jan 2017, 11:59

Re: Textdateien automatisiert zusammenfassen

Postby pekachen » 24 Jan 2017, 14:47

Hallo Anja,

den Dateinamen erhält man in der Tat am besten über die .FILE_INFO() Funktion.
Diese Funtion liefet eine Tabelle mit diversen Attributen. Man kann sich das z.B. wie folgt im Designer anschauen:


SELECT * FROM $salaryOut.getNewInstance("$RD.workingDirectory()/$resultFile").FILE_INFO_()

Das liefert z.B. Spalten wie ID (wird generiert), Name, path, fullname etc.

Ich denke damit müsstest Du weiterkommen...

VG
pekachen
 
Posts: 2
Joined: 23 Jul 2013, 07:58

Re: Textdateien automatisiert zusammenfassen

Postby anja.hennig » 25 Jan 2017, 16:30

Leider funktioniert aber folgendes Query nicht:

SELECT * FROM $MyCSVStructure.getNewInstance($files).Data().TABLE() links
JOIN $MyCSVStructure.getNewInstance($files).FILE_INFO_() rechts
on links._FILE_ID = rechts.FILE_ID

Wenn ich dieses ausführe, bekomme ich kein Ergebnis. Gibt es eine Möglichkeit den Dateinamen + die Werte in der Datei in eine Tabelle zu bekommen?
anja.hennig
 
Posts: 14
Joined: 18 Jan 2017, 11:59

Re: Textdateien automatisiert zusammenfassen

Postby KaiBaechle » 30 Jan 2017, 17:17

In "FILE_INFO_" (rechts) ist FILE_ID eine "normale" Spalte, d. h. ohne vorangestelltem "_".

SELECT * FROM $MyCSVStructure.getNewInstance($files).Data().TABLE() links
JOIN $MyCSVStructure.getNewInstance($files).FILE_INFO_() rechts
ON links._FILE_ID = rechts.FILE_ID
KaiBaechle
 
Posts: 33
Joined: 24 May 2013, 21:20


Return to RapidRep Designer



Who is online

Users browsing this forum: No registered users and 1 guest

cron