我是不是误会了~为什么 COPY 会改变输出? (PGPLSQL)

am i misunderstanding this~ Why is COPY changing the output? (PGPLSQL)

我非常接近解决我目前遇到的一个大问题,这是最后一点。我只是不知道为什么当我需要完全相同时输出与数据库中的不同。

入库前读取数据:

[NULL][NULL][NULL][SO][etc.......]

正在将数据从 COPY 读取到文本文件:

\000\000\000\016[etc...} (it matches, basically)

使用二进制格式读取COPY之后的数据

PGCOPY
ÿ
[NULL][NULL][NULL][EOT][etc.......] (first line changes a fair bit)
(rest of the data stays exactly the same.)
˜ÿÿ

出于测试目的,postgresql 查询 运行:

COPY (SELECT byteacolumn FROM tablename WHERE id = 1) TO 'C:\path\file' (format:Binary);

所以使用二进制格式几乎可以满足我的需求,但还不够。我可以忽略添加的行,但我不知道第一行数据应该是什么。

TL;DR: COPY 正在添加行并更改我的数据的第一行。我如何让它停止? :(

二进制 COPY 格式实际上仅设计用于 COPY FROM 命令,因此它包含大量元数据以允许 Postgres 对其进行解释。

在前两行之后,接下来的 9 个字节也是 header 的一部分。接下来的 2 个字节给出了后续记录中的字段数,接下来的 4 个字节给出了后续字段中的字节数。只有这样,实际数据才开始。

格式的完整详细信息可以在 documentation 中找到,但请注意它们可能会在未来的版本中更改。

(但是,假设这与您询问 here 的问题相同,我认为这是错误的解决方法。您在 lo_import/[ 的正确轨道上=13=].)