ПОСТГРЕССЫ - ВСТАВИТЬ В ИНОСТРАННЫЙ СТОЛ - PullRequest
0 голосов
/ 01 апреля 2019

Я создал таблицу на внешний сервер

CREATE FOREIGN TABLE external_table (
    field_1 varchar(15) NULL,
    field_2 int4 NULL
)
SERVER server_name
OPTIONS(compression 'pglz', stripe_row_count '500000');

Теперь я хочу вставить в external_table, но если я выполню этот запрос

INSERT INTO external_table (field_1, field_2) VALUES  ('test',1);

Возвращает эту ошибку

ERROR: operation is not supported

Как добавить запись в чужую таблицу?

Я пробовал со следующей вставкой

INSERT INTO external_table (field_1, field_2) select 'test',1;

Это работает, но я не могу использовать INSERT INTO с инструкцией SELECT.

1 Ответ

0 голосов
/ 01 апреля 2019

Похоже, расширение, которое вы используете, поддерживает "вставку в ... выбрать ..", но не прямую вставку.

, который вы можете использовать, вы, вероятно, должны задать этот вопрос при указании расширения.

PS: похоже, что используемое вами расширение - cstore_fdw. Он не поддерживает прямую вставку, поскольку полностью отменяет преимущества использования столбчатого хранилища и создает некоторые дополнительные издержки. Если вы используете cstore_fdw, попробуйте использовать массовые вставки вместо однострочных. Вставка в обычную таблицу и перемещение данных в таблицу cstore_fdw, когда данные достигают определенного размера (т. Е. Число строк stripe_row_count), является гораздо лучшим вариантом.

...