已知问题 - 对于 Number 数据类型,从 Oracle 到湖屋的复制活动失败

当 Oracle 中的某个列的数据类型为 Number 时,从 Oracle 到湖屋的复制活动失败。 在 Oracle 数据库中,小数/数值类型的刻度可以大于其精度。 湖屋中的 Parquet 文件要求缩放小于或等于精准率,因此复制活动失败。

状态:待解决

产品体验:数据工厂

症状

尝试将数据从 Oracle 复制到 lakehouse 时,会收到类似于:ParquetInvalidDecimalPrecisionScale. Invalid Decimal Precision or Scale. Precision: 38 Scale:127的错误。

解决方案和解决方法

可使用查询将列显式强制转换为 NUMBER(p,s) 或其他类型(如 BINARY_DOUBLE),以规避此问题。 使用 NUMBER(p,s)时,请确保 p >= ss >= 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

后续步骤