Geo*_*rge 7 sql postgresql blob
我试图从PostgreSQL数据库中删除所有大对象.
我们使用大型图像数据集.最初,这些被存储为postgres中的Large Objects及其元数据.我正在将这些数据库转换为仅存储对映像的文件系统引用,以便更好地管理数据库与映像数据的磁盘需求(有时相互冲突).
导出所有大对象,创建对它们的引用和测试后,我准备删除大对象.
我曾尝试编写一个允许我删除所有这些功能的功能,但无济于事.这似乎有效,但因为并非该范围内的每个数字都对应一个大型物体,所以它倒下了.
CREATE OR REPLACE FUNCTION "DeleteLOs"() RETURNS INTEGER AS
$$
DECLARE
BEGIN
FOR i IN 1620762..1801116 LOOP
SELECT lo_unlink(i);
END LOOP;
RETURN 0;
END;
$$
LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
理想情况下,我可以将这样的函数与查询配对,以确保我得到所有这些,而不是指定可能不完整的范围:
SELECT DISTINCT loid FROM pg_largeobject
Run Code Online (Sandbox Code Playgroud)
要删除数据库中的所有现有大对象:
SELECT lo_unlink(l.oid) FROM pg_largeobject_metadata l;
Run Code Online (Sandbox Code Playgroud)
关于dba.SE的相关答案以及更多细节: