我使用以下代码成功地将二进制文件(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
有人有见识吗?
答案 0 :(得分:0)
你很困惑。
INSERT
未插入二进制文件,但插入了(二进制)字符串\\Users\\My Name\\Pictures\\picture.jpg
。
无法在数据库服务器上创建文件/Users/My Name/Desktop/picture.hex
,可能是因为路径上的目录之一不存在。
如果要将二进制文件的内容插入数据库,则必须编写一个程序,该程序将打开该文件并将其读取到内存中,然后将其插入。