also damit wir uns auch richtig verstehen.

zum einlesen der datei, habe ich eine externeltable gemacht, vereinfacht mit 2 Spalten
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
create table ext_test (
i Date,
n Varchar2(20)
)
organization external (
type oracle_loader
default directory test_dir
access parameters (
records delimited by newline
fields terminated by ','
missing field values are null
(
i date 'yyyy-mm-dd' -- länge 10 zeichen
,n --länge max 20 Zeichen
)
)
location ('testfile')
)
reject limit unlimited;
|
ich habe diese testfiledatei wo tausende von zeilen stehen, die aus 2 spalten bestehen. Datum und irgendein text.
beim
|
Source code
|
1
|
select* from ext_test
|
dir mir nun eigentlich die datei in der tabelle anzeigen sollte, wurde ne logdatei geschrieben wo es stand das, dass erste feld(i) zu lang ist und nicht gematcht werden kann.
nun hbe ich eine weitere externaltable geschrieben und die nur ein feld varchar(4000) hat und den inhalt der einen zeile hat...
das hanze wurde natürlich ohne probleme gematcht und beim select auch angezeigt.
dann habe ich auf die spalte ein dump und den hexwert jedes zeichens anzuzeigen gemacht und siehe da, nach jedem wert stand ebeb 00 also als beispiel für 123, 3100 3200 3300, statt 3132 33
oracle hat diese bestimmt nicht eingebaut, da die datei von anfang an so geliefert wurde, ich weiss jetzt nicht ob das ganze mit enconding zu tun hat und man es durch angabe bestimmter CHARACTERSET angabe beheben kann oder ist die datei einfach nur kaputt
für angabe datum mit zeit brauch man in oracle keine datetime datentype, date speichert sowohl mit als auch ohne zeitangabe