Wie wollen Sie laden ein fixed-width-Daten-Datei, die mit SQL*Loader, die keine Zeilentrenner, sondern Felder mit Zeilenumbruch-Zeichen?
Muss ich laden ein flat file in eine oracle-Datenbank mittels SQL*Loader.
Die flat-Datei enthält ein Feld mit Zeilenumbruch-Zeichen als gültige Daten.
Die Datei ist NICHT Zeile getrennt durch einen Zeilenumbruch.
Wie würde ich Ändern, das folgende Steuerelement-Datei zu tun?
LOAD DATA
INFILE 'mydata.dat'
INTO TABLE emp
( field1 POSITION(1:4) INTEGER EXTERNAL,
field2 POSITION(6:15) CHAR,
big_field POSITION(17:7000) CHAR
)
Hinweis: ich habe keine Kontrolle über das format der eingehenden Datei.
Note: ... indicates that the data continues to the end of the field
example:
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
...
result:
field1: 1234
field2: 67890abcde
big_field: ghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
...
- Was bedeutet die tatsächlichen Daten Aussehen; es gibt ein paar Optionen, je nachdem es..? Auf einer Seite Hinweis: die maximale Größe einer varchar-Feld in Oracle ist 4000 Zeichen, so dass Sie möglicherweise Probleme haben, mit Ihrem
big_field
- es wird in ein blob, also wir sind gut auf die Länge. Auch dies ist nur ein Beispiel-Steuerelement-Datei.
- Sie müssen eine Zeile Trennzeichen irgendeiner Art auch für die mit fester Länge-Dateien. Wir konnten unsere Anbieter, um die Datei ändern, w/ ein Zeilentrenner. Vielen Dank für all die Hilfe, jeder!
- Kam gerade über diesen Beitrag, aber haben Sie versucht, mit FIX-Befehl in sqlldr-Kontroll-Datei? INFILE mydata.dat "fix 7000"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem hier ist, dass jede Zeile interpretiert werden, da ein Datensatz in der flachen Datei und nicht als ein Feld. Ich vermute, dass eventuell müssen Sie neu formatieren Sie die Datei mit Trennzeichen wie ein Komma oder einen Tabulator oder pipe '|' mit '\n', so dass der Loader interpretiert Sie als einen einzigen Datensatz. Jedes Ereignis eine neue Zeile '\n' wird behandelt, als eine neue Platte, die ich nehme. siehe den link unten-
http://docs.oracle.com/cd/B28359_01/server.111/b28319/ldr_concepts.htm#sthref718
Können Sie das format der eingehenden Datei, aber Sie können diese Datei Lesen, und erstellen Sie eine korrekte formatierte mydata.dat für den SQL-Loader. Der springende Punkt ist, um den Loader zu verstehen, 'was ist dein Rekord terminator?', andere weisen, die Sie Ihre Datei würde wie eine riesige Schallplatte.
Nie selber ausprobiert, aber anscheinend, müssen Sie herausfinden, was Sie als Zeilentrennzeichen.
und pass auf, dass die Zeichen als hex. Das man aufnimmt 5E die #
laden von Daten
Eingabedatei test.dat "str X'5E'"
Keine Ahnung, welche Versionen es ist anwendbar, um obwohl, vielleicht Wert schlagen die F1-Taste und auf der Suche nach Zeilentrennzeichen..
???? Es gibt keine Zeilentrennzeichen. Oh haben, etwas zu schreiben, um aber dann, wenn Sie möchten, verwenden Sie so etwas wie SQL*Loader.