是否可以在程序 URL 的 postgresql 副本中使用变量?

问题描述

我正在使用以下命令在 postgresql 中导入数据:

copY test FROM PROGRAM 'curl https://example.com/events/123&start_date=20210331T191500Z' ;

我必须手动更改“&startdate=***”,以便每次导入时只获取最后一小时的数据。我想知道是否有一个变量可以插入到 url 的“startdate”部分,因此它总是对应于当前时间过去一个小时。 提前致谢。

解决方法

参数只能与 PostgreSQL 中的 SELECTINSERTUPDATEDELETE 一起使用。

如果你需要一个参数化的 COPY 语句,你必须使用参数构造一个 SQL 字符串并发送它。您构造查询字符串的准确程度取决于您使用的编程语言。

在 PL/pgSQL(PostgreSQL 的标准存储过程语言)中,例如它看起来像

EXECUTE format(
           'COPY test FROM PROGRAM ''curl https://example.com/events/123&start_date=%s''','20210331T191500Z'
        );