使用copy export将当前日期动态注入postgresql查询

xv8emn3q  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(330)

有没有一种方法可以动态地将yyyymmdd格式的日期注入到我正在使用的postgresql查询中 copy 内部 psql ?

copy (SELECT 
        course.id, course.area, course.status, course.type, 
        customer.firstname, customer.lastname, customer.email 
      FROM course 
      JOIN customer_course 
      ON customer_course.course_id = course.id 
      JOIN customer 
      ON customer.id = customer_course.customer_id 
      WHERE course.type LIKE '%heathland%' 
      AND course.status = 'open'
    ) TO '~/Dropbox/CRMPicco/prod-customer-courses-' . (SELECT NOW()::date) . '.csv' WITH CSV;

运行该查询时,出现以下错误:

ERROR:  syntax error at or near "."
LINE 1: ...ace%' AND course.status = 'open' ) TO STDOUT . (SELECT ...

如果我可以用当前日期创建这个csv,而不必手动编辑查询,这将是非常有利的。

yws3nbqq

yws3nbqq1#

psql 可以将变量设置为输出文件的名称:

postgres=#> select '~/Dropbox/CRMPicco/prod-customer-courses-'||current_date||'.csv' as fname
postgres=#> \gset
postgres=#> copy (...) to :'fname';

注意缺失的部分 ; 在第一次select之后,您必须用 \gset . 变量名是通过“source”的列别名定义的。

相关问题