首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将图像插入PostgresSQL

将图像插入PostgresSQL
EN

Stack Overflow用户
提问于 2019-12-05 15:40:09
回答 3查看 736关注 0票数 3

我正试图插入postgres数据库。这是查询

代码语言:javascript
复制
INSERT INTO public.tblcast(
    castname, castimage)
    VALUES ('Henry Cavill',bytea('E:\Cast\henry.jpg'));

但它显示出一个错误

代码语言:javascript
复制
ERROR:  invalid input syntax for type bytea
LINE 3:  VALUES ('Henry Cavill',bytea('E:\Cast\henry.jpg'));
                                      ^
SQL state: 22P02
Character: 81ERROR:  invalid input syntax for type bytea

列castimage具有数据类型bytea。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-12-05 15:50:35

编辑:我已经有一段时间没有回答这个问题了,但我想我错了,虽然OP似乎对答案很满意,但我认为它需要一些评论。感谢丹尼尔·韦里特!

lo_import

使用lo_import,您可以使用绝对路径导入文件,但它返回一个类型为OID的对象,因此您需要更改列数据类型--这也是stud3nt在另一个答案中提出的。

代码语言:javascript
复制
INSERT INTO public.tblcast(castname, castimage)
VALUES ('Henry Cavill',lo_import('server_path_to_file'));

如果您没有权限在导入之前将文件放在服务器中(就像我们大多数人一样),您可以从您的控制台使用带有\lo_importpsql工具:

代码语言:javascript
复制
echo "\lo_import '/client_path_to_file' \\\ INSERT INTO  public.tblcast VALUES ('Henry Cavil', :LASTOID)" | psql yourdb

lo_export

代码语言:javascript
复制
psql yourdb -c "SELECT lo_export(castimage, 'path_to_export_file') FROM tblcast;"

pg_read_file (不太灵活):

generic file access function提供了在服务器中读取文件的可能性。但是,它仅限于数据目录路径。如果您想知道它在系统中的位置,请尝试以下命令:

代码语言:javascript
复制
SHOW data_directory

以下是如何使用它的一种方法--正如迈克普尔的回答所示:

代码语言:javascript
复制
INSERT INTO public.tblcast(castname, castimage)
VALUES ('Henry Cavill',pg_read_file('path to file')::bytea);
票数 2
EN

Stack Overflow用户

发布于 2019-12-05 15:45:41

使用pg_read_file

代码语言:javascript
复制
INSERT INTO public.tblcast(
    castname, castimage)
    VALUES ('Henry Cavill',pg_read_file('E:\Cast\henry.jpg')::bytea);
票数 2
EN

Stack Overflow用户

发布于 2019-12-05 15:42:10

使用lo_import('E:\Cast\henry.jpg')而不是bytea('E:\Cast\henry.jpg')

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59198586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档