Вставка данных: посмотрите, какой столбец вызывает переполнение при Redshift - PullRequest
0 голосов
/ 02 января 2019

У меня есть таблица с ~ 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, если это поможет.

У меня слишком много столбцов для проверки один за другим. Пространство также важно, поэтому я не хочу увеличивать точность всех столбцов.

1 Ответ

0 голосов
/ 02 января 2019

Это слишком долго для комментария.

Я думаю, что вы должны проверять столбцы один за другим - если только в 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 ;
...