已知问题 - 对于 Number 数据类型,从 Oracle 到 Lakehouse 的复制活动失败
当 Oracle 中的某个列具有 Number 数据类型时,从 Oracle 到 Lakehouse 的复制活动将失败。 在 Oracle 中,缩放可以大于十进制/数值类型的精准率。 Lakehouse 中的 Parquet 文件要求缩放小于或等于精准率,因此复制活动失败。
状态:待处理
产品体验:数据工厂
现象
尝试将数据从 Oracle 复制到 Lakehouse 时,会收到类似于以下的错误:ParquetInvalidDecimalPrecisionScale. Invalid Decimal Precision or Scale. Precision: 38 Scale:127
。
解决方案和缓解措施
可使用查询将列显式强制转换为 NUMBER(p,s)
或其他类型(如 BINARY_DOUBLE
)来解决此问题。 使用 NUMBER(p,s)
时,请确保 p >= s
和 s >= 0
。 同时,由 NUMBER(p,s)
定义的范围应涵盖列中存储的值的范围。 否则,你会收到类似于 ORA-01438: value larger than specified precision allowed for this column
的错误。 下面是一个示例查询:SELECT CAST(ColA AS BINARY_DOUBLE) AS ColB FROM TableA