插入数据:查看哪列导致Redshift上的数值溢出

时间:2019-01-02 05:43:27

标签: sql amazon-redshift

我有一个包含约1000列的表,我试图将其插入一个空表。除标识符外,所有列均为数字。

我写了一个create table语句,像这样:

create table xx as (
  id varchar(10), 
  a numeric(9,4), 
  b numeric(9,4), 
  c numeric(5,4), 
  d numeric(5,4)
)

然后像

那样插入
insert into xx select * from yy 

我得到一个错误:类似“错误:XX000:数值数据溢出(结果精度)”。我想我需要提高其中一列的精度,但是哪一列呢?我怎么知道?如果有帮助,我正在使用Aginity。

我有太多列无法一一测试。空间也很重要,因此我不愿意提高所有列的精度。

1 个答案:

答案 0 :(得分:1)

这个评论太长了。

我认为您必须一个一列地测试这些列-除非Redshift有一些我尚未发现的日志记录机制。

您可以使用电子表格构造查询。也就是说,从列列表开始,然后生成查询,例如:

select min(a), max(a),
       min(b), max(b),
       . . .
from yy;

顺便说一句,您的问题很可能仅基于执行insert而没有列名的问题。您可以先尝试:

insert into xx (id, a, b, c, d, . . .)
    select id, a, b, c, d, . . .
    from yy ;