从postgres中的bytea字段下载二进制文件

时间:2018-08-13 06:01:00

标签: postgresql binary binaryfiles psql

我使用以下代码成功地将二进制文件(jpg)放入了postgres的bytea字段中。

CREATE TABLE file_locker_test
(
ID integer PRIMARY KEY,
THE_FILE_ITSELF bytea
);


INSERT INTO file_locker_test (ID, THE_FILE_ITSELF)
VALUES (1, bytea('\\Users\\My Name\\Pictures\\picture.jpg'));

现在,我正尝试重新下载文件,以确保文件已正确上传。

我尝试过:

\copy (SELECT encode(file_locker_test(the_file_itself), 'hex') FROM file_locker_test LIMIT 1) TO '\\Users\\My Name\\Desktop\\picture.hex';

并收到此错误:

//Users/My Name/Desktop/picture.hex: No such file or directory

有人有见识吗?

1 个答案:

答案 0 :(得分:0)

你很困惑。

  1. INSERT未插入二进制文件,但插入了(二进制)字符串\\Users\\My Name\\Pictures\\picture.jpg

  2. 无法在数据库服务器上创建文件/Users/My Name/Desktop/picture.hex,可能是因为路径上的目录之一不存在。

如果要将二进制文件的内容插入数据库,则必须编写一个程序,该程序将打开该文件并将其读取到内存中,然后将其插入。