markwaldhoff
24-02-2005, 14:41
Ich habe im Moment die Aufgabe aus einer Textdatei etwas auszulesen und dann in eine DB zu schreiben... das ganze hat auch schon funktioniert... jedoch haben wir die Textdatei mit substr ausgelesen... hier ein auszug:
---------------------------------------------------------------------
...
...
Procedure baf_get_line (p_inputfile in UTL_FILE.FILE_TYPE, p_eof in out boolean)
is
p_buffer varchar2(400);
begin
utl_file.get_line(p_inputfile,p_buffer);
baf_record.tknd_nr := substr(p_buffer,1,20);
baf_record.tc_nutzer_id := substr(p_buffer,22,7);
baf_record.tc_auftrags_nummer := substr(p_buffer,30,15);
baf_record.limit_angefragt := substr(p_buffer,46,26);
baf_record.name := substr(p_buffer,73,40);
baf_record.strasse := substr(p_buffer,114,55);
baf_record.postfach := substr(p_buffer,170,55);
baf_record.plz := substr(p_buffer,226,12);
...
...
---------------------------------------------------------------------
Dann hat sich jetzt jedoch herausgestellt das es sich nicht um eine feste Breite der Zeilen handelt, sondern das die einzelnen Daten die wir da auslesen durch ein ";" getrennt sind...
Jetzt müsste ich immer einen Wert so lange einlesen bis so ein ";" kommt... in PHP wäre das ja einfach mit der Funktion "explode" möglich... aber in PLSQL habe ich da noch nichts gefunden... aber vielleicht kann mir hier jemand weiterhelfen ?!?!?
Ach ja... so sieht eine solche Datei aus... ist immer nur eine zeile...
091918 ;1103354;000000005261113;0000000000000000000001100 0;SRG Sondershausen Test GmbH ;Schachtstraße 12 ; ;99703 ;Sondershausen ;D ;Peter Prost ;004343432606420 ; ;24.02.2005 12:40;742
---------------------------------------------------------------------
...
...
Procedure baf_get_line (p_inputfile in UTL_FILE.FILE_TYPE, p_eof in out boolean)
is
p_buffer varchar2(400);
begin
utl_file.get_line(p_inputfile,p_buffer);
baf_record.tknd_nr := substr(p_buffer,1,20);
baf_record.tc_nutzer_id := substr(p_buffer,22,7);
baf_record.tc_auftrags_nummer := substr(p_buffer,30,15);
baf_record.limit_angefragt := substr(p_buffer,46,26);
baf_record.name := substr(p_buffer,73,40);
baf_record.strasse := substr(p_buffer,114,55);
baf_record.postfach := substr(p_buffer,170,55);
baf_record.plz := substr(p_buffer,226,12);
...
...
---------------------------------------------------------------------
Dann hat sich jetzt jedoch herausgestellt das es sich nicht um eine feste Breite der Zeilen handelt, sondern das die einzelnen Daten die wir da auslesen durch ein ";" getrennt sind...
Jetzt müsste ich immer einen Wert so lange einlesen bis so ein ";" kommt... in PHP wäre das ja einfach mit der Funktion "explode" möglich... aber in PLSQL habe ich da noch nichts gefunden... aber vielleicht kann mir hier jemand weiterhelfen ?!?!?
Ach ja... so sieht eine solche Datei aus... ist immer nur eine zeile...
091918 ;1103354;000000005261113;0000000000000000000001100 0;SRG Sondershausen Test GmbH ;Schachtstraße 12 ; ;99703 ;Sondershausen ;D ;Peter Prost ;004343432606420 ; ;24.02.2005 12:40;742