linux - postgres 复制命令,二进制文件

标签 linux postgresql

我正在使用 COPY 将字段从表复制到文件。该字段是一个压缩文本文件,因此我使用二进制副本。 文件已创建,唯一的问题是 COPY 向文件添加了我不需要的标题和结尾(?)。这可以改变吗?是否有一个参数可以使 COPY 将字段完全按照数据库中的原样放置?

如果我手动删除不需要的 header ,我可以使用 zcat 或 gunzip 提取文件。

我正在做这样的事情:

psql -d some_database -c \
 "copy  (select some_column from a_table where id=900) to stdout with BINARY;" > /tmp/tmp.gz

然后我想做

gunzip /tmp/tmp.gz

有什么想法吗?

最佳答案

一种可能,尽管您可能不喜欢它,但它可行:

psql -At -c "select encode(content, 'base64') from t where ..."  | base64 -d

即将内容打印为 base64 并对其进行解码。我认为现实是 psql 旨在产生可读的输出,并且故意说服它吐出原始二进制数据是困难的。

我想如果你想要足够的话,你可以编写一些工具(Perl/python 脚本)来连接到数据库并直接打印原始输出。

COPY 的“WITH BINARY”选项不仅执行简单的二进制输出,它还执行一些可能值得怀疑的编码。

关于linux - postgres 复制命令,二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6344120/

相关文章:

linux - 在 linux 中查找没有扩展名的文件并批量重命名它们

linux - 单行 : print all lines except the last 3?

database - PostgreSQL 中的 CHAR 有 2 种可能的长度

c# - 一起使用 npgsql 12 和 ef 6 - 有人成功了吗?

node.js - 解析 promise 数组 node.js

linux - Jenkins `Make gradlew executable` 选项不使`gradelw 可执行

ruby - 备份所有 git repos 并使用相同脚本设置 cron 作业的脚本

postgresql - 多个案例陈述

python - 如何处理/映射自定义 postgresql 类型到 Django 模型

linux - Bash - 将输出重定向到文件时处理退格控制字符