SQL-Loader-Fehler: "Variable-Länge-Feld überschreitet die maximale Länge."
Ich habe eine SQL Loader Control-Datei
LOAD DATA
INFILE 'test.txt'
INTO TABLE TEST replace
fields terminated "|" optionally enclosed by '"' TRAILING NULLCOLS
( DOCUMENTID INTEGER(10),
CUSTID INTEGER(10),
USERID INTEGER(10),
FILENAME VARCHAR(255),
LABEL VARCHAR(50),
DESCRIPTION VARCHAR(2000),
POSTDATE DATE "YYYY-MM-DD HH24:MI:SS" NULLIF POSTDATE="",
USERFILENAME VARCHAR(50),
STORAGEPATH VARCHAR(255)
)
und es gibt mir eine Fehlermeldung wenn ich die SQL-Loader drauf,
Record 1: Rejected - Error on table TEST, column FILENAME.
Variable length field exceeds maximum length.
Hier ist die Zeile.. die Länge der Spalte ist weit unter 255..
1|5001572|2|/Storage/Test/5001572/test.pdf|test.pdf||2005-01-13 11:47:49||
Und hier ist eine kuriosität, die ich bemerkte innerhalb der log-Datei
Column Name | Position | Len | Term | Encl | Datatype
FILENAME | NEXT | 257 | | | VARCHAR
Ich definiere die Länge als 255 sowohl in meinem Tisch, und control-Datei. Noch die log spuckt es aus, als 257? Ich habe versucht, klopfen die Länge in der control-Datei, 253, so scheint es, als 255 in die log-Datei, aber das gleiche Problem.
Hilfe? Dies nervte mich jetzt seit zwei Tagen.
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht definieren, Ihre Datenfelder als VARCHAR2 und INTEGER. Verwenden Sie CHAR. Die meisten der Zeit, die beim laden von Daten aus einer text-Datei, die Sie verwenden möchten CHAR, oder vielleicht das DATUM, obwohl selbst das aus der Umrechnung von text-form. Die meisten der Zeit, die Sie brauchen noch nicht einmal ein Spezifizierer Länge. Die Standard-Länge für CHAR-Feld ist 255. Ihre control-Datei sollte ungefähr so Aussehen:
+1 für DCookie, aber zu erweitern, dass es wichtig ist zu unterscheiden zwischen Daten-Typen, wie angegeben, in einer Tabelle und die Datentypen in SQL*loader control-Datei, wie Sie meinen ziemlich verschiedene Dinge, verwirrend.
Beginnen mit einem Blick auf die Dokumentation, und beachten Sie, dass beim laden von normalen text-Dateien, die Sie brauchen, um mit der "portable" - Datentypen.
Varchar ist ein "non-portable" geben, in denen:
So, wie DCookie sagt, CHAR wird die Sache zu gehen, und INTEGER-EXTERNE ist ein sehr Häufig verwendeter SQL*Loader Daten geben, die würden Sie wahrscheinlich wollen, um anzugeben, DOCUMENTID etc.