gpt4 book ai didi

java - 检测 Oracle 数字数据类型的实际精度和小数位数

转载 作者:行者123 更新时间:2023-11-29 09:32:39 28 4
gpt4 key购买 nike

我们的一个 Oracle 数据源有数百个表,其中所有数字列都是使用 NUMBER 数据类型定义的,没有精度和小数位数。但实际上,列可以存储纯整数值或小数值 - 无法仅通过查看数据类型来判断。现在,这是一个大问题,因为当我尝试将任何这些数据加载到大数据工具(Sqoop、Hive、Spark 等)时,所有这些工具都将这些列视为字符串,这是一个非常棘手的问题。我认为这是所有基于 JDBC/Java 的工具的问题。

是否有可能以某种方式检测存储在 NUMBER 类型列中的值的实际精度和小数位数。我希望 Oracle 将其保留在元数据表中的某处,但我在任何地方都看不到。我最后的办法是对表中的数据进行随机抽样并在一侧存储转换模式,但我希望有更好的方法。我真的很想

例如,表 TEST 有三列,IDAMOUNTQUANTITY 都声明为 NUMBER没有指定精度或比例。

但实际上ID应该是bigint,AMOUNT应该是decimal(18,6),QUANTITY应该是int。

create table test (
ID number,
AMOUNT number,
QTY number
)

ID AMOUNT QTY
1 200.56 4
2 23.754 5

我不可能手动进行映射,因为我有 600 个表,每个表有 50-300 列。数据采样是我最后的手段。

最佳答案

Oracle 数字类型默认为 38.0

关于java - 检测 Oracle 数字数据类型的实际精度和小数位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47815461/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com