2009-07-28 5 views
0

Ich bekomme diese Fehlermeldung in der Produktion.java.sql.SQLException: [BEA] [Oracle JDBC-Treiber] [Oracle] ORA-01438: Wert größer als angegebene Genauigkeit ermöglicht diese Spalte

Leider kommt dies von einer gekauften Anwendung und der Support-Prozess ist nicht genau schnell.

Dies passiert, wenn Daten von einer Tabelle in eine andere kopiert werden. Beide Tabellen sollen die gleichen Spaltenarten und -längen haben. Bisher habe ich eine einige von ihnen überprüft, indem die folgenden Aktionen ausführen:

select distinct(length(column_name))) from source_table 

dann den Wert mit der Länge der column_name in der Zieltabelle zu vergleichen, aber es ist mir viel Zeit nehmen.

Gibt es eine bessere Möglichkeit, diese Prüfung durchzuführen?

Ich möchte identifizieren, welche Spalte die Daten enthält, deren Länge über die Grenze der Quelle hinausgeht.

Ich arbeite mit:

Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production 
With the Partitioning, OLAP and Oracle Data Mining options 
JServer Release 9.2.0.7.0 - Production 

Antwort

0

Eine Brute-Force-Methode, um diese für das Debuggen:

Sie ein Skript erstellen könnten, die eine FOR Schleife läuft und fügt Zeile für Zeile aus Tabelle A Tabelle B , Ausgabe der Zeilen-ID oder einiger relevanter Daten an die Konsole. Sobald Sie die fehlerhafte Zeile identifiziert haben, können Sie versuchen, Spalte für Spalte einer vorhandenen Zeile mit den Spaltendaten aus der fehlerhaften Zeile zu aktualisieren, bis Sie Ihren Schuldigen gefunden haben.

+0

Ich würde eine C-Tabelle erstellen haben für I B auf die Hälfte Migrations nicht wollen, und lassen Sie es in einem inkonsistenten Zustand .... mmhhh Ich frage mich, Wie viel würde das kosten? Die A-Tabelle ist etwa 100 Spalten und enthält etwa 9k Datensätze ... – OscarRyz

+0

Ja, das klingt umständlich. Wenn Sie jedoch von Grund auf an Tabelle A arbeiten, können Sie sie abschneiden, sobald Sie mit Ihrer Suche fertig sind. Viel Glück! – akf

Verwandte Themen