我编写了将向该表添加文件的新版本的函数。函数的用户应为update_file(path_to_file)。我需要从文件加载所有内容,并将其存储到表中,如下所示:
insert into file(new_version, new_content);
Run Code Online (Sandbox Code Playgroud)
现在,我可以找到一种读取所有内容并将其放在桌子上的方法。该COPY命令允许我把文件作为CONCATENATE行的序列。我只看到联系方式,但我不喜欢这种方式。
有什么好的解决方案吗?
谢谢。
我找到了以下解决方案,希望对您有所帮助。
CREATE OR REPLACE FUNCTION read_file_utf8(path CHARACTER VARYING)
RETURNS TEXT AS $$
DECLARE
var_file_oid OID;
var_record RECORD;
var_result BYTEA := '';
BEGIN
SELECT lo_import(path)
INTO var_file_oid;
FOR var_record IN (SELECT data
FROM pg_largeobject
WHERE loid = var_file_oid
ORDER BY pageno) LOOP
var_result = var_result || var_record.data;
END LOOP;
PERFORM lo_unlink(var_file_oid);
RETURN convert_from(var_result, 'utf8');
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
925 次 |
| 最近记录: |