MySQL->Oracle 10g Migrierung

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 Like

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 Like