0

我的任务是使用 AWS Schema Conversion Tool 将一些 Oracle DB 转换为 Postgresql。Oracle 只有 Number[(precision[,scale])] 类型。Oracle 似乎使用定点存储整数。许多 ID 列被定义为由 SCTNumber(19,0)转换为的列。Numeric(19,0)

我什至见过一个(到目前为止)简单Number的转换为Double Precision.

Postgres 具有适当的标量整数类型,例如bigint.

乍一看,与简单整数相比,将整数存储为定点数似乎在存储和时间上都非常低效。

我是否遗漏了什么,Oracle 是否将它们存储为有效的标量整数?

出于兴趣,Oracle 中简单 ID 列的最佳类型是什么?

4

1 回答 1

1

Oracle 的数字数据类型是可变长度数据类型,这意味着该值1使用的存储(和内存)少于123456789

理论上number(19,0)应该映射到bigint,但是 Oraclenumber(19,0)允许存储一个值,例如9999999999999999999该值会超出bigintPostgres 中 a 的范围。

bigint罐头存储的最大价值是9223372036854775807- 如果这对你来说足够了,那么坚持使用bigint.

如果你真的需要更高的值,你将不得不硬着头皮numeric在 Postgres 中使用。

于 2021-11-30T12:53:22.397 回答