我知道可以使用 lo_import()
从 PostgreSQL 脚本插入大对象:
INSERT INTO image (name, raster)
VALUES ('beautiful image', lo_import('/etc/motd'));
问题是,我试图在一个紧密锁定的服务器上执行一个脚本,所以我无法将文件上传到它。是否可以在不依赖外部文件的情况下将常量字符串插入到大对象中?
最佳答案
如果该值小于 1GB,则可以执行以下操作:
INSERT INTO image (name, raster)
VALUES ('beautiful image', lo_from_bytea(0,$1));
bytea
类型有点烦人。您可能不得不求助于特定于驱动程序的恶作剧,以使驱动程序/客户端库理解 $1 是 bytea
类型。例如,在 Perl 的 DBD::Pg 中,您必须准备语句,然后执行以下操作:$insert->bind_param(1, $blob, { pg_type => PG_BYTEA });
关于sql - PostgreSQL:在不依赖外部文件的情况下从 SQL 脚本在大对象中插入字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35845916/