wie zu sagen, sqlldr zu trimmen Leerzeichen am Anfang und Ende Leerzeichen
Ich bin mit sqlldr, um Daten zu laden, in denen einige der Felder haben Leerzeichen am Anfang und Ende Leerzeichen. Gibt es eine Möglichkeit zu sagen, sqlldr, ignorieren diese Leerräume andere als sagen
field "trim(:field)"
?
In der Tat, standardmäßig ohne optionale
Wie es sich herausstellt, dass führende und nachfolgende Leerzeichen areignored standardmäßig, sondern nur für bestimmte Datentypen. Jedoch einige Arten, wie VARCHAR verlassen der Räume intakt. Siehe den link unter csee.umbc.edu/portal/help/oracle8/server.815/a67792/...
PRESERVE BLANKS
führende und nachfolgende Leerzeichen werden ignoriert. Meine Frage entstand aus der Tatsache, dass ich mit einem tool auf der oben sqlldr, erzeugt eine ctl-Datei hinzufügt PRESERVE BLANKS
standardmäßig.Wie es sich herausstellt, dass führende und nachfolgende Leerzeichen areignored standardmäßig, sondern nur für bestimmte Datentypen. Jedoch einige Arten, wie VARCHAR verlassen der Räume intakt. Siehe den link unter csee.umbc.edu/portal/help/oracle8/server.815/a67792/...
InformationsquelleAutor Isaac Kleinman | 2011-12-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Feld "trim (: - Feld)" funktioniert gut in den meisten der Fall, aber ich kam mit den typischen Fall, wo die Spalte Größe war char(1), aber die Daten in der Steuerdatei wurde der " Y " und "trim (: - Feld)" Fehler beim laden der Daten.
Nach vielen Recherchen kam ich zu wissen, dass die trim () - Funktion trimmt die Leerzeichen aus den Daten, aber zur gleichen Zeit, fügt null auf Daten anstelle von Leerzeichen, so dass die Datenlänge im obigen Beispiel werden 2 es gilt die null-Werte auf der linken Seite der Daten. So, die Daten werden aber einige Sache wie nullY, da die Spalte Größe in der Tabelle ist kleiner als die tatsächliche Größe seiner nicht geladen und oracle wirft Fehlermeldung.
Um dieses Problem zu beheben habe ich verwendet:
"trim(null von trim(:Feld)"
Obigen Skript wird zuerst trimmt die Leerzeichen und dann wieder schneiden die null angehängt, die von der sql-loader.
Ich hoffe, dass die Informationen, die ich zur Verfügung gestellt haben, wird hilfreich sein, um jemand vor dem problem wie ich.
Ich konnte nicht widerstehen, das zu posten, da ich nicht finde, jeder thread der Beantwortung dieser Art von Problem.
Ich bin neugierig, aber, wie es aussieht, es funktioniert nicht, wenn Sie und testen Sie es durch ausführen von select trim(null von trim(' Essen')) from dual. Es funktioniert anders in den sqlloader?
InformationsquelleAutor KD007
Ich weiß, es ist ein Alter thread, aber ich werde läuten trotzdem.
Wie mit vielen Dingen, die Antwort ist "es hängt davon ab." Es hängt davon ab, ob die Daten festen format oder getrennt. Wenn getrennt, es hängt auch davon ab, ob das Steuerelement Dateien verwendet, die OPTIONAL BEILIEGENDE BY-Klausel. Für all die schmutzigen details finden Sie in der Oracle SQL*Loader-Dokumentation. Zum Beispiel, versuchen Sie diesen link: http://docs.oracle.com/cd/B28359_01/server.111/b28319/ldr_field_list.htm#i1007768
InformationsquelleAutor Kirby