我正在使用 COPY 将字段从表复制到文件。该字段是一个压缩文本文件,因此我使用二进制副本。
文件已创建,唯一的问题是 COPY 向文件添加了标头和尾部(?),这是我不需要的。这可以改变吗?是否有一个参数可以使 COPY 将字段与数据库中的字段完全相同?
如果我手动删除不需要的标头,我可以使用 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”选项不仅仅执行简单的二进制输出,它还执行一些可能值得怀疑的编码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)