Wie wollen Sie konvertieren von scientific notation in der Oracle-SQL?

Wir werden versuchen, eine Datei zu laden erstellt von FastExport in einer oracle-Datenbank.
Aber der Float-Spalte wird exportiert wie diese: 1.47654345670000000000 E010.

Wie konfigurieren Sie den SQL*Loader zum importieren von es wie dass.

Erwarten Control-Skript wie folgt Aussehen:

OPTIONS(DIRECT=TRUE, ROWS=20000, BINDSIZE=8388608, READSIZE=8388608)
UNRECOVERABLE LOAD DATA 
infile 'data/SOME_FILE.csv'
append
INTO TABLE SOME_TABLE
fields terminated by ','
OPTIONALLY ENCLOSED BY '"' AND '"'
trailing nullcols (
    FLOAT_VALUE             CHAR(38)       "???????????????????",
    FILED02                 CHAR(5)        "TRIM(:FILED02)",
    FILED03                 TIMESTAMP      "YYYY-MM-DD HH24:MI:SS.FF6",
    FILED04                 CHAR(38)
)

Ich habe versucht to_number('1.47654345670000000000 E010', '9.99999999999999999999 EEEE')

Fehler: ORA-01481: invalid number format model Fehler.

Ich habe versucht to_number('1.47654345670000000000 E010', '9.99999999999999999999EEEE')

Fehler: ORA-01722: invalid number

Dies sind die Lösungen, die ich kam mit, in der Reihenfolge der Präferenz:

  1. to_number(replace('1.47654345670000000000 E010', ' ', ''))
  2. to_number(TRANSLATE('1.47654345670000000000 E010', '1 ', '1'))

Ich würde gerne wissen, ob es irgendwelche leistungsfähigere Lösungen.

Wenn der loader akzeptiert eine Funktion-wie to_number(), vielleicht wird es akzeptieren, string-Funktionen wie substring, string-Verkettung, oder strip-Räume?
Das wird mein letzter Ausweg. Ich versuche zu vermeiden String-Operationen so viel als möglich. Wir haben diese Dateien Steuern für Hunderte Milliarden Datensätze.
to_number(to_char(thecolumn)) ich denke,
Das funktioniert nicht, weil der Raum. Die to_char nichts nützliches, da es bereits einen char.

InformationsquelleAutor ScrappyDev | 2012-02-29

Schreibe einen Kommentar