我编写的功能会将新版本的文件添加到表中。函数的用户应该调用update_file(path_to_file)。我需要从文件加载所有内容并将其存储到表中,如:
insert into file(new_version, new_content);
现在我可以找到一种方法来阅读所有内容并将其放到桌面上。 COPY命令允许我将文件连接为行序列。 我只看到联系线路的方式,但我不喜欢这种方法。
有一些好的解决方案吗?
感谢。
答案 0 :(得分:3)
我找到了以下解决方案,希望它对某人有所帮助。
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;
答案 1 :(得分:0)
另一种解决方案可能是使用$ tag $ ... $ tag $语法。它是PostgreSQL的功能,称为“美元引用”,它允许您在不引用的情况下在标签之间插入任何文本。有关详细信息,请访问https://www.postgresql.org/docs/9.5/static/sql-syntax-lexical.html,4.1.2.4。美元引用的字符串常量