2016-05-13 10 views
0

Zum ersten Mal sqlldr verwenden, einfach eine Datei mit einzelnen Spalt zu laden versuchen, und kann nicht eine richtige Art und Weise finden, es zu tun :( Was mache ich als Trennzeichen setzen?sqlldr Ladedatei mit einzelner Spalte

Hier ist mein .ctl Datei:

load data 
infile 'myfile.dat' 
into table mytable 
fields terminated by '' 
(mycolumn) 

ich halte Fehler in der .log wie immer:

Record 4: Rejected - Error on table ..., column .... 
ORA-12899: value too large for column "... (actual: 80, maximum: 24) 

Auch wenn die Werte in der Datei sind maximal 8 Zeichen jeweils oder smth: string1 string2 string3

Jede Hilfe wird sehr geschätzt.

Vielen Dank, G

Antwort

0

Sie brauchen nicht die fields terminated by Linie in diesem Fall, aber Sie sollten ein TRUNCATE oder APPEND je nach, wenn Sie Daten behalten möchten vorhandene oder nicht.

load data 
infile 'myfile.dat' 
truncate 
into table mytable 
(mycolumn) 
+0

Dank Gary, aber mit Ihrer Lösung nur ich 1 Zeichen für jeden Wert eingefügt .. Die Quelle Spalte ist VARCHAR2 (24). Die Datei wird gespult wie: 'SET echo off SET Feedback aus SET Begriff aus SET Seitengrße 0 SET newpage 0 SET Raum 0 Spule myfile.dat distinct (mycolumn) wählen aus mytable; ' ' ' Anschließend wird die Zieltabelle vor dem Laden der Spooldatei wie folgt erstellt:' create table mytable (MeineSpalte VARCHAR2 (24)); 'aber ich bekomme immer noch 1 Char aus der Datei .. – GeorgeK

+0

eigentlich war das Problem In der Spooldatei befand sich der Zeilenvorschub weit rechts von jeder Zeile. Es funktionierte, wenn Sie 'set trimspool on' in das Spooling einfügen sql – GeorgeK

+0

Sie könnten die Steuerdatei auch ändern in: 'MeinSpalten-Zeichen 'trim (: mycolumn)" ' –

0

Warum nicht einfach die Größe der Spalte zu 80 Tabelle varchar2 ändern Alter ändern (80)

Verwandte Themen