我在外部服务器上创建了一个表
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;
它可以工作,但我不能在SELECT语句中使用INSERT INTO。
看起来您使用的扩展名支持“插入...选择..”但不支持直接插入。
你可以使用你应该在指定扩展名时提出这个问题。
PS:看起来你使用的扩展名是cstore_fdw。它不支持直接插入,因为它完全取消了使用柱状存储的好处并产生了一些额外的开销。如果您使用的是cstore_fdw,请尝试使用批量插入而不是单行插入。当数据达到特定大小(即stripe_row_count行数)时,插入常规表并将数据移动到cstore_fdw表中是更好的选择。