Postgres ОШИБКА :: при копировании (пакетировании) данных из одной таблицы в другую с той же схемой и удалении из исходной таблицы - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть таблица 'table1' со столбцами (id, createdate). Предположим, у меня есть миллионы записей в нем, и я хочу скопировать все записи старше, чем сегодня, в «table1_back» с той же схемой, что и table1.

Я попытался запустить это в пакетном режиме следующим образом, но выдает ошибку

WITH row_batch AS (
    SELECT id 
    FROM table1 
    WHERE createddate::date < NOW() LIMIT 20000 ), 
delete_rows AS (
    DELETE FROM table1 t 
    USING row_batch b 
    WHERE t.id = b.id RETURNING *)
INSERT INTO table1_back SELECT * FROM delete_rows;

Но я получаю ошибку ОШИБКА: У INSERT больше выражений, чем у целевых столбцов , но на самом деле это точная копия таблицы 1.

1 Ответ

1 голос
/ 02 марта 2020

Полагаю, вам следует попробовать

ВОЗВРАТ т. *

Ошибка возникает из-за того, что столбцы из подзапроса row_batch добавляются в подзапрос delete_rows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...