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



我正在将一个非常旧的Oracle数据库转换为Postgres,其中缺少大多数数字列的精度,然而,在Postgres表结构中,存在对相同列的精度。在将数据从Oracle数据库移动到Postgres时,我遇到了过多的数字溢出错误。

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

我的查询如下(将在Postgres上运行(,我想修改它以获得更新脚本,我可以在OracleDB上运行该脚本来获得损坏的值。

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数据库上运行这个查询,然后我将在Oracle数据库上运行生成的脚本?

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

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

最新更新