Wie ich oben in meinem Kommentar sagte, sind die Angaben nicht klar, aber ich vermute, das ist, was Sie zu tun versuchen. Hier ist eine Möglichkeit zum Laden von Daten in Oracle unter Verwendung von sqlldr
, wobei ein Feld von doppelten Anführungszeichen umgeben ist und Zeilenumbrüche enthält, wobei das Ende des Datensatzes eine Kombination aus Wagenrücklauf und Zeilenvorschub ist. Dies kann passieren, wenn die Daten aus einem Excel-Arbeitsblatt stammen, das beispielsweise als CSV-Datei gespeichert ist, in der die Zelle die Zeilenumbrüche enthält.
Hier ist die Datendatei, die von Excel als .csv exportiert und in gvim angezeigt wird, wobei die Option aktiviert ist, um Steuerzeichen anzuzeigen. Sie können die Zeilenumbrüche als '$'
Charakter und die Zeilenumbrüche als '^M'
Zeichen sehen:
100,test1,"1line1$
1line2$
1line3"^M$
200,test2,"2line1$
2line2$
2line3"^M$
die Steuerdatei wie dieses Konstrukt die "str"
Klausel über die infile Option Zeile mit dem Ende der Aufzeichnung Zeichen zu setzen. Es erzählt sqlldr diesem hex 0D (Carriage Return oder^M) ist die Aufzeichnung Separator (auf diese Weise er die Zeilenvorschübe innerhalb der doppelten Anführungszeichen ignoriert):
LOAD DATA
infile "test.dat" "str x'0D'"
TRUNCATE
INTO TABLE test
replace
fields terminated by ","
optionally enclosed by '"'
(
cola char,
colb char,
colc char
)
Nach dem Laden sieht die Daten wie folgt mit Zeilenvorschübe im Kommentarfeld (ich nannte es colc):
SQL> select *
2 from test;
COLA COLB COLC
-------------------- -------------------- --------------------
100 test1 1line1
1line2
1line3
200 test2 2line1
2line2
2line3
SQL>
Was ist mit den Zeilennummern? Gibt es auch eine Leerzeile nach jedem Datensatz ? – sjsam
Möchten Sie * alle * neue Zeilen in der zweiten Spalte entfernen? –
Hi sjsam, eigentlich Zeilennummer ist nicht erforderlich, behalten Sie die Leerzeile so wie sie ist. gehen, um dieses Feld in Orakel-Tabelle mit SQL Loader laden, zwei Felder und drei Datensätze betrachten ist vorhanden – Chidam