Cho*_*ung 28 postgresql byte file
目前,我有一些文件存储在postgres 8.4中作为bytea.文件类型为.doc,.odt,.pdf,.txt等.
我可以知道如何下载Postgres中存储的所有文件,因为我需要进行备份.我需要它们的原始文件类型而不是bytea格式.
谢谢!
Grz*_*ski 41
一个简单的选项是使用COPY带有encode十六进制格式的命令,然后应用xxdshell命令(使用-p 连续hexdump样式开关).例如,假设我在samples表的bytea列中有jpg图像:
\copy (SELECT encode(file, 'hex') FROM samples LIMIT 1) TO
'/home/grzegorz/Desktop/image.hex'
$ xxd -p -r image.hex > image.jpg
Run Code Online (Sandbox Code Playgroud)
当我检查它在实践中工作.
这是我能想到的最简单的事情:
psql -qAt "select encode(file,'base64') from files limit 1" | base64 -d
Run Code Online (Sandbox Code Playgroud)
这-qAt很重要,因为它剥离了输出的任何格式。这些选项在psqlshell 中也可用。
小智 5
尝试这个:
COPY (SELECT yourbyteacolumn FROM yourtable WHERE <add your clauses here> ...) TO 'youroutputfile' (FORMAT binary)
Run Code Online (Sandbox Code Playgroud)
64位基数
psql -Aqt -c "SELECT encode(content, 'base64') FROM ..." | base64 -d > file
Run Code Online (Sandbox Code Playgroud)
xxd
psql -Aqt -c "SELECT encode(content, 'hex') FROM ..." | xxd -p -r > file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30649 次 |
| 最近记录: |