Hallo Forum!
Ich befülle gerade eine Oracle DB (DB-Version: 10.2.0.2.0, DB-Zeichensatz: WE8ISO8859P1, NCHAR-Zeichensatz: UTF8) mit Daten aus einer MySQL Datenbank (Version 3.23.57-nt) und bekomme ständig diese Fehlermeldung: SQL Error: ORA-01722: Ungültige Zahl
Dieser Fehler ist eingrenzbar da er immer nur dort auftaucht wo ich eine Zahl habe mit „nachkommaziffer“ (Bsp. 126.4).
In MySQL lautete der Feldtyp Double.
In Oracle sind folgende Parameter angegeben: Datatype: Simple, Type: Float, Precision: 126, Default 0.00.
Die Tabelle editiere ich mit dem Oracle SQL Developer. Was mache ich Falsch?
Gruß,
Faisal
ich hab noch was vergessen. Ein Beipsiel Statement sieht folgendermassen aus:
INSERT INTO "QQRKOKS"."ARTIKEL" (ARTIKEL\_ID, EINHEIT\_ID, ARTIKEL\_BEZ,
PREIS, KAT\_ID, AGK) VALUES (1, 2, Testartikel', '1512.50', 1, 'Y');
Columns:
ARTIKEL_ID NUMBER(11,0)
EINHEIT_ID NUMBER(11,0)
ARTIKEL_BEZ VARCHAR2(255 Bytes)
PREIS FLOAT
KAT_ID NUMBER(11,0)
AGK VARCHAR2(5 Bytes)
Gruß,
Faisal
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
bekomme ständig diese Fehlermeldung: SQL Error: ORA-01722:
Ungültige Zahl
Ein Beipsiel Statement sieht
folgendermassen aus:
INSERT INTO „QQRKOKS“.„ARTIKEL“ (ARTIKEL_ID, EINHEIT_ID,
ARTIKEL_BEZ,
PREIS, KAT_ID, AGK) VALUES (1, 2, Testartikel’, ‚1512.50‘, 1,
‚Y‘);
Hallo Faisal,
probier mal, die Singlequote-Zeichen (’) um den Float-Wert wegzulassen. Oracle interpretiert ein Literal ‚123.34‘ als String (mit den von dir gesehenen Konsequenzen).
Bsp (Oracle 9.2):
create table bbxx (a Number(19,2));
Table created
insert into bbxx values (12.3)
1 row inserted
gruss
bernhard
1 „Gefällt mir“
Hallo Bernhard!
Es hat geklappt! Vielen Dank für den Tipp. Wie migriert man von MySQL zu Oracle ohne hunderte Datensätze händisch manipulieren zu müssen. Es gibt ja die Oracle Migration Workbench, allerdings habe ich keine ausreichenden Rechte auf der DB um dieses Tool anzuwenden, andere Ideen?
Gruß,
Faisal
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Mahlzeit,
Wie migriert man
von MySQL zu Oracle ohne hunderte Datensätze händisch
manipulieren zu müssen.
das schafft man, indem man die richtige sprachliche Umgebung setzt. Dein System scheint von Deutsch / Deutschland auszugehen. Wenn Du auf der Kommandozeile, von der aus Du Deine Importroutine aufrufst, die Umgebungsvariable NLS_LANG setzt, wird alles richtig erkannt:
C:\Temp\>set nls\_lang= **GERMAN\_GERMANY.WE8ISO8859P1**
C:\Temp\>sqlplus sancho@testystem
SQL\> select **'1.5'/9** from dual;
select '1.5'/9 from dual
\*
FEHLER in Zeile 1:
ORA-01722: invalid number
SQL\> select **'1,5'/9** from dual;
'1,5'/9
----------
,166666667
SQL\> exit
C:\Temp\>set nls\_lang= **AMERICAN\_AMERICA.WE8ISO8859P1**
C:\Temp\>sqlplus sancho@testsystem
SQL\> select **'1,5'/9** from dual;
select '1,5'/9 from dual
\*
ERROR at line 1:
ORA-01722: invalid number
SQL\> select **'1.5'/9** from dual;
'1.5'/9
----------
.166666667
SQL\> exit
Gruß
Sancho
1 „Gefällt mir“