使用 PostgreSQL COPY 语句保留换行符

问题描述 投票:0回答:1

我在一个函数中有一个 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
命令时,有什么方法可以保留换行符并获取之前显示的所需输出吗?

postgresql export line-breaks carriage-return
1个回答
0
投票

我不确定

COPY
中的
LOOP
对于单个值是最佳方法,但要解释 Posix 转义字符串语法,请在字符串文字前面加上
E
:

LOOP
  EXECUTE FORMAT('COPY (SELECT E%L) TO ''%s''', _page.content, _directory || '/pages/' || _page.id || '.md');
END LOOP;

参见:

© www.soinside.com 2019 - 2024. All rights reserved.