Wie wirklich überspringen Sie die Verarbeitung einer Spalte?
Um die Daten zu laden (aus einer CSV-Datei) in eine Oracle-Datenbank, die ich verwenden mit SQL*Loader.
In der Tabelle, empfängt diese Daten, es ist ein varchar2(500)
Spalte, genannt COMMENTS
.
Für einige Gründe, ich will ignorieren Sie diese Informationen aus der CSV-Datei.
So, ich schrieb das control-file:
Options (BindSize=10000000,Readsize=10000000,Rows=5000,Errors=100)
Load Data
Infile 'XXX.txt'
Append into table T_XXX
Fields Terminated By ';'
TRAILING NULLCOLS
(
...
COMMENTS FILLER,
...
)
Dieser code scheint korrekt zu funktionieren, wie die COMMENTS
Feld in der Datenbank ist immer auf null
.
Jedoch, wenn in meiner CSV-Datei habe ich einen Datensatz, in dem die entsprechenden COMMENTS
Feld überschreitet die 500-Zeichen-Begrenzung, bekomme ich eine Fehlermeldung vom SQL*Loader:
Record 2: Rejected - Error on table T_XXX, column COMMENTS.
Field in data file exceeds maximum length
Gibt es eine Möglichkeit, wirklich dem Ausschluss der Verarbeitung meiner COMMENTS
Felder?
InformationsquelleAutor Romain Linsolas | 2009-06-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann ich nicht nachvollziehen dein problem. Ich bin mit Oracle 10.2.0.3.0 mit SQL*Loader-10.2.0.1.
Hier ist meine test-Fall:
Kontrolle Datei:
Daten-Datei:
Ich bin mit dem Befehl
sqlldr userid=xxx/yyy@zzz control=test.ctl
und ich bin immer alle Zeilen ohne Fehler:Können Sie versuchen einen anderen Ansatz, ich bin immer die gleiche gewünschte Ergebnis mit der folgenden Datei control:
Update folgende Romaintaz Kommentar: ich sah in ihm wieder und es geschafft, den gleichen Fehler wie du, wenn die Größe der Spalte 255 Zeichen überschritten. Dies ist, weil die Standard-Datentyp von SQL*Loader ist char(255). Wenn Sie eine Spalte mit mehr Daten, müssen Sie geben Sie die Länge. Das folgende Steuerelement-Datei das problem gelöst, für die eine Spalte mit 300 Zeichen:
Hoffe, das Hilft,
--
Vincent
Sie können einen Kommentar, dass 4 Kb überschreitet chars. Ich aktualisiert meine Antwort.
Mein test enthält nur einen KOMMENTAR mit 514 Zeichen... ich bin Also weit nach erreichen der 4K Grenze. Ich bekomme immer noch den Fehler, sogar mit "Kommentare filler-char(500)".
Ich fand Sie in der SQL*Loader-doc, der Standard-Typ ist char(255). Sie müssen geben Sie eine Länge (zB: char(1000)).
In der Tat, ich brauche, um geben Sie einen Wert in CHAR(xxx) größer als die maximale Länge des Feldes in der Datenbank, zum Beispiel 1000. Danke!
InformationsquelleAutor Vincent Malgrat
Nur zu empfehlen, eine kleine Verbesserung, Sie könnten versuchen, so etwas wie:
Jetzt müssen Sie greifen die ersten 200 Zeichen (oder irgendeine Zahl, die Sie angeben, in ihm Platz) alle Kommentare - es sei denn, einige Ihrer input-Datensätze Werten für das Feld "Kommentare" an, der über 4000 Zeichen, in denen Sie abgelehnt werde vom loader mit dem 'exceeds max length" Fehler notiert. Aber angenommen, die selten oder nicht der Fall ist, werden alle Datensätze geladen werden, die mit einigen der Kommentare gekürzt auf 200 Zeichen beschränkt.
Wenn Sie über
char(4000)
erhalten Sie einen SQL-Loader-Fehler - es gibt ein limit, wie weit Sie drücken können, die Bestie.InformationsquelleAutor user98960