繁体   English   中英

将 oracle 转换为 PostgreSQL 时出现数值溢出

[英]Numeric Overflow while converting oracle to PostgreSQL

我正在将一个非常旧的 Oracle DB 转换为 Postgres,其中大部分数字列的精度都丢失了,但是,在 Postgres 表结构中,存在相同列的精度,我在从Oracle DB 到 Postgres。

现在,我想将所有超出精度的值更新为 oracle 数据库中的最大精度数,因此,我正在尝试使用 Postgres 表结构创建一个更新脚本,它可以帮助我找到所有损坏的行oracle。

我的查询如下(在 Postgres 上运行),我想修改它以获取可以在 oracle DB 上运行的更新脚本以获取损坏的值。

select 'update ' ||table_name || 'set ' || column_name || '=' || (numeric_precision - numeric_scale) || ' where column_name > ' || (numeric_precision - numeric_scale) from information_schema.columns where table_schema='test' and data_type='numeric';

现在在这里( numeric_precision - numeric_scale ),如果它返回一个值 3,那么我想用 999 替换它,如果它是 4,那么我希望它是 9999。

请有人告诉我这是怎么可能的,我想在 Postgres DB 上运行这个查询,然后我将在 Oracle DB 上运行生成的脚本?

您可以使用 (numeric_precision - numeric_scale) 结果的长度来添加您喜欢使用 LPAD 的模式

LPAD('', length((numeric_precision - numeric_scale)), '9' )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM