我有一个包含 ~1000 列的表,我正在尝试将其插入到一个空表中。 除标识符外,所有列均为数字。
我写了一个创建表语句
,如下所示: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。
我有太多的列要一一测试。空间也很重要,所以我不愿意提高所有列的精度。
我认为
你必须逐个测试列——除非 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 ;