Ich habe eine SQL Loader Control-Datei,
%Vor% und es gibt mir einen Fehler, wenn ich SQL Loader darauf ausführen,
Record 1: Rejected - Error on table TEST, column FILENAME.
Variable length field exceeds maximum length.
Hier ist diese Zeile .. die Länge dieser 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 in der Log-Datei bemerkt habe
Column Name | Position | Len | Term | Encl | Datatype
FILENAME | NEXT | 257 | | | VARCHAR
Ich definiere die Länge in meiner Tabellen- und Kontrolldatei als 255. Doch das Log spuckt es als 257 aus? Ich habe versucht, die Länge in der Steuerdatei auf 253 herunterzufahren, so dass es in der Protokolldatei als 255 erscheint, aber das gleiche Problem.
Irgendwelche Hilfe? Das hat mich seit zwei Tagen gestört.
Danke.
Definieren Sie Ihre Datenfelder nicht als VARCHAR2 und INTEGER. Verwende CHAR. Meistens möchten Sie beim Laden von Daten aus einer Textdatei CHAR oder DATE verwenden, auch wenn dies aus einem Textformat konvertiert wird. Die meiste Zeit brauchst du nicht einmal einen Längenbezeichner. Die Standardlänge für ein CHAR-Feld ist 255. Ihre Steuerdatei sollte etwa so aussehen:
%Vor%+1 für DCookie, aber um darauf hinzuweisen, ist es wichtig, zwischen Datentypen, wie in einer Tabelle spezifiziert, und Datentypen in einer SQL * -Loader-Steuerdatei zu unterscheiden, da sie ziemlich unterschiedliche Dinge verwirrend bedeuten.
Beginnen Sie mit einem Blick auf die Dokumentation und beachten Sie Wenn Sie normale Textdateien laden, müssen Sie die Datentypen "portable" verwenden.
Varchar ist ein "nicht-portabler" Typ, in dem:
... besteht aus einem binären Längenunterfeld gefolgt von einer Zeichenfolge der angegebenen Länge
Wie DCookie sagt, ist CHAR die richtige Wahl, und INTEGER EXTERN ist ein sehr gebräuchlicher SQL * Loader-Datentyp, den Sie wahrscheinlich für DOCUMENTID usw. angeben möchten.
Tags und Links oracle sql-loader