Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ORA-01722: invalid number

Empfohlene Antworten

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!

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. ;) ;)

Hi,

an dem NLS liegts hoechstwahrscheinlich.

Den Parameter kann man auch bloederweise nach der Installation auch nicht mehr aendern.

Gruesse

Denise

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

  • 5 Jahre später...

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

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 ...

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.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.