我一直在寻找 STDIN 选项,以与 COPY 类似的方式使用 FOREIGN TABLE ...并在指南中发现一个“错误”:官方 sql-create-foreign-table Guide中没有关于选项的文档。没有链接,什么都没有:
选项(选项“价值”[,...])
与新外部表或其列之一关联的选项。...
因此,由于缺乏信息,这个问题变成了两个:
可以使用 STDIN
FOREIGN TABLE
吗?“OPTIONS”文档在哪里?
编辑以添加示例
CREATE FOREIGN TABLE t1 (
aa text,
bb bigint
) SERVER files OPTIONS (
filename '/tmp/bigBigdata.csv',
format 'csv',
header 'true'
;
是对使用文件系统的经典丑陋 PostgreSQL 限制,所以我需要一个终端解决方案......想象一下在 shell 上带有管道的东西,如
psql -c "ALTER FOREIGN TABLE t1 ... STDIN; CREATE TABLE t2 AS SELECT trim(aa) as aa, bb+1 as bb FROM t WHERE bb>999" < /thePath/bigBigdata.csv
是一种“不直接复制,只过滤一个数据流”,并从这个过滤后的流中创建一个最终的表 t2。