我在一个函数中有一个 PostgreSQL 语句,如下所示,并将
content
列中的一些 Markdown 内容放入文件中:
LOOP
EXECUTE FORMAT('COPY (SELECT %L) TO ''%s''', _page.content, _directory || '/pages/' || _page.id || '.md');
END LOOP;
列 Markdown 内容有换行符,当我在
SELECT
内使用正常的 psql
语句检查它时,看起来像这样:
-[ RECORD 1 ]+----------------------------------------------------------
content | ## First heading\r +
| \r +
| ### Second heading\r +
| \r +
| Some random content +
所以在输出的 markdown 文件中,我期望这样的内容:
## First heading
### Second heading
Some random content
但是换行符和回车符只是以纯文本形式显示,所以它看起来很尴尬:
## First heading\r\n\r\n### Second heading\r\n\r\nSome random content
使用
COPY
命令时,有什么方法可以保留换行符并获取之前显示的所需输出吗?
我不确定
COPY
中的 LOOP
对于单个值是最佳方法,但要解释 Posix 转义字符串语法,请在字符串文字前面加上 E
:
LOOP
EXECUTE FORMAT('COPY (SELECT E%L) TO ''%s''', _page.content, _directory || '/pages/' || _page.id || '.md');
END LOOP;
参见: