পূর্ববর্তী প্রশ্নের এই উত্তরের অনুরূপ , এবং যদি আপনি এই সীমাবদ্ধতাগুলিpg_read_file()
না চান (সংক্ষেপে: pg_read_file
ডাটাবেস ডিরেক্টরিটির বাইরে ফাইলগুলি পড়তে না পারা এবং বর্তমান সেশনের অক্ষর এনকোডিংয়ের পাঠ্য পড়তে পারে)।
এই ফাংশনটি কোনও পাথের জন্য কাজ করে তবে এটি সুপারসুজার হিসাবে তৈরি করা দরকার:
create or replace function stack.bytea_import(p_path text, p_result out bytea)
language plpgsql as $$
declare
l_oid oid;
begin
select lo_import(p_path) into l_oid;
select lo_get(l_oid) INTO p_result;
perform lo_unlink(l_oid);
end;$$;
lo_get
9.4 তে প্রবর্তিত হয়েছিল তাই পুরানো সংস্করণগুলির জন্য আপনার প্রয়োজন হবে:
create or replace function stack.bytea_import(p_path text, p_result out bytea)
language plpgsql as $$
declare
l_oid oid;
r record;
begin
p_result := '';
select lo_import(p_path) into l_oid;
for r in ( select data
from pg_largeobject
where loid = l_oid
order by pageno ) loop
p_result = p_result || r.data;
end loop;
perform lo_unlink(l_oid);
end;$$;
তারপর:
select convert_from(stack.bytea_import('/tmp/test.xml'), 'utf8')::xml;