26. August 200223 j Hallo, beim Einspielen in meine Datenbank bricht das Laden der Daten mit dem SQL- Loader ab: ORA-01722: invalid number. Es handelt sich um ein Feld vom Typ NUMBER (15,2). Die Werte in der .txt- Datei sind mit dem Trennet "." abgespeichert. Aendere ich den Trenner von diesem Feld ab (beispielsweise 12.45 auf 12,45), so funktioniert die Einspielung. Die Datenbank (Oracle) ist lokal installiert. Meine lokalen Settings habe ich ebenfalls schon geändert, der Parameter in init.ora existiert ebenfalls. Woran könnte das noch liegen? Vielen Dank!
26. August 200223 j Die Fehlermeldung an sich meint schonaml, dass der Wert den Du in das Feld impotieren möchtest keine Nummer ist. Das wird genau an dem Punkt als Dezimalzeichen liegen. Ich weiß nicht hundertprozentig ob es möglich ist, bei der Oracle-Datenbank ein Dezimaltrennzeichen vorzugeben. Ich meine aber schon. Zur Zeit ist es so, dass die Datenbank als Dezimaltrennzeichen ein Komma erwartet. Da in Deiner Datei aber ein Punt steht kann die Datenbank den Wert nicht in eine Zahl umwandeln. Du mußt also entweder in Deiner Datei die Trennzeichen ändern oder mal schauen ob Du in der Datenbank den Parameter Dezimaltrennzeichen umgestellt bekommst. Dazu kann ich Dir aber leider keine näheren Tips geben... Das hab ich immer machen lassen, wenn ich so ein Problem hatte. ;)
26. August 200223 j Hi, an dem NLS liegts hoechstwahrscheinlich. Den Parameter kann man auch bloederweise nach der Installation auch nicht mehr aendern. Gruesse Denise
26. August 200223 j Hallo, danke schonmal für die rasche Antwort. Der NLS- Parameter kann in der init.ora auch nach der Installation geändert werden. Oder werden dann diese Aenderungen nicht wirksam? Wir haben die Datenbank auch schon neu aufgesetzt und den Parameter einmal auf ",." und ".," gesetzt- ohne Erfolg. Es wäre sehr viel Arbeit, in der Datei den Trenner von "." auf "," zu ändern. Es muss ja auch anders gehen. Habe ich sonst keine andere Möglichkeit? Danke, Stephanie
10. September 200718 j eine möglichkeit wäre das zielfeld der import tabelle als varchar2 zu erstellen und danach eine procedur starten die entsprechende änderungen an den werten vornimmt z.b. insert into zieltabelle (feld_1.... select decode (zahl_mit_punkt, '.',',',null) from import_table
10. September 200718 j Ich hatte mal ein ähnliches Problem und meine es damals dadurch gelöst zu haben, daß ich die Variable NLS_NUMERIC_CHARACTERS angepaßt hatte. Hier ist ein passender Thread aus dem Oracle-Forum zu dem Thema: SQL*Loader problem: ORA-01722: invalid ...
10. September 200718 j Den Parameter kann man auch bloederweise nach der Installation auch nicht mehr aendern. Das stimmt nicht. Du kannst lediglich den Datenbankzeichensatz nicht mehr nachträglich ändern. Sprich aus einer Datenbank mit einem 1-Byte Encoding plötzlich eine DB zu machen die alles in UTF8 abspeichert ist nicht möglich. Wir haben die Datenbank auch schon neu aufgesetzt und den Parameter einmal auf ",." und ".," gesetzt- ohne Erfolg. Das liegt daran, dass die NLS Parameter Clientparameter sind. D.h. der Client der sich zu DB verbindet bestimmt selbst welche NLS Einstellungen er verwendet - alle andere wär auch nicht wirklich praktikabel. Wichtig ist allerdings, dass mindestens der NLS_LANG Parameter als Umgebungsvariabel gesetzt ist erst dann werden die anderen NLS Einstellungen vom Client (sqlplus, sqlloader etc) verwendet. Mehr Infos gibt's (wie immer) in der Doku: 3 Setting Up a Globalization Support Environment Dim
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.