首页 > 解决方案 > 带有包含返回/换行符的复制语句的 Postgresql 导出结果

问题描述

您好我需要在复制语句中使用返回或换行符导出动态查询结果。

COPY( SELECT 'SELECT now(); '||E'\n'||' REINDEX TABLE "' || schemaname || '"."' || relname || '";' FROM pg_stat_all_tables ORDER BY n_dead_tup DESC)TO 'E:\scripts\maintenance\reindex.sql';

查询本身在查询编辑器中工作正常;

SELECT 'SELECT now(); '||E'\n'||' REINDEX TABLE "' || schemaname || '"."' || relname || '";' FROM pg_stat_all_tables ORDER BY n_dead_tup DESC 

当我从结果集窗格复制结果并将其粘贴到任何文本编辑器时,我得到了我想要的。但是在 COPY 语句中,它不起作用。

标签: postgresql

解决方案


这是因为COPY文本格式将换行符呈现为\n.

如果您真的想以这种方式编写多行 SQL 脚本,则可以取消换行符,因为它并不是真正需要的。

您还可以考虑使用adminpack函数来编写文件。


推荐阅读