如何导出带有psql(不带PGCOPY头)的二进制文件? [英] How to export binary file with psql (without PGCOPY header)?

查看:0
本文介绍了如何导出带有psql(不带PGCOPY头)的二进制文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在PostgreSQL DB中有一个bytea列,它保存PDF文件。 如何使用psql导出该文件?

我已尝试:

psql -U <USER> -h <HOST> -p <PORT> -d <DB> -c "copy (select <column> from <table> where <column> = <id>) to STDOUT with BINARY;" > output.pdf

这将保存文件,我可以在PDF阅读器中打开它。但当我使用hexdump -C output.pdf | head检查文件时,我看到它有一个以PGCOPY开头的标题。

如何在没有PGCOPY标题情况下导出该文件?

推荐答案

我用postgre的encode()换成十六进制,用bashxxd换成十六进制:

psql -U <USER> -h <HOST> -p <PORT> -d <DB> -c "copy (SELECT encode(<column>, 'hex') from <table> where <column> = <id>) to STDOUT"  | xxd -p -r > output

文件看起来正常:

$ hexdump -C output | head -n 5
00000000  25 50 44 46 2d 31 2e 36  0d 25 e2 e3 cf d3 0d 0a  |%PDF-1.6.%......|
00000010  38 37 20 30 20 6f 62 6a  0d 3c 3c 2f 4c 69 6e 65  |87 0 obj.<</Line|
00000020  61 72 69 7a 65 64 20 31  2f 4c 20 31 30 32 33 32  |arized 1/L 10232|
00000030  32 35 2f 4f 20 38 39 2f  45 20 31 35 36 35 30 36  |25/O 89/E 156506|
00000040  2f 4e 20 31 37 2f 54 20  31 30 32 32 38 30 36 2f  |/N 17/T 1022806/|

这篇关于如何导出带有psql(不带PGCOPY头)的二进制文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆