Udostępnij za pośrednictwem


Znany problem — działanie Kopiuj z oracle do lakehouse kończy się niepowodzeniem dla typu danych Liczba

Działanie kopiowania z bazy danych Oracle do usługi Lakehouse kończy się niepowodzeniem, gdy jedna z kolumn z bazy danych Oracle ma typ danych Liczba . W programie Oracle skala może być większa niż precyzja dla typów dziesiętnych/liczbowych. Pliki Parquet w usłudze Lakehouse wymagają, aby skala jest mniejsza niż lub równa precyzji, więc działanie kopiowania kończy się niepowodzeniem.

Stan: Otwórz

Środowisko produktu: Data Factory

Objawy

Podczas próby skopiowania danych z bazy danych Oracle do usługi Lakehouse jest wyświetlany błąd podobny do: ParquetInvalidDecimalPrecisionScale. Invalid Decimal Precision or Scale. Precision: 38 Scale:127.

Rozwiązania i obejścia

Możesz obejść ten problem, używając zapytania, aby jawnie rzutować kolumnę na NUMBER(p,s) lub inne typy, takie jak BINARY_DOUBLE. W przypadku korzystania z NUMBER(p,s)polecenia upewnij się, że p >= s polecenie i s >= 0. Tymczasem zakres zdefiniowany przez NUMBER(p,s) powinien obejmować zakres wartości przechowywanych w kolumnie. Jeśli nie, zostanie wyświetlony błąd podobny do ORA-01438: value larger than specified precision allowed for this column. Oto przykładowe zapytanie: SELECT CAST(ColA AS BINARY_DOUBLE) AS ColB FROM TableA

Następne kroki