在 postgresql 中使用副本?
using copy in postgresql?
有一个 table 有 3 列 mydocs(id serial, docform integer, content text)
copy (select (content) from mydocs where id=30 ) to 'D:/html/ex10.xml'
;
我使用此表达式选择 1 行 ( id=30 ) 并将其中的 (content text) 放入具有路径的文件夹中。
它有效但是
<?xml version="1.0" encoding="utf-8"?>
\r\n
<tutorial>
\r\n
<title>"Заметки об XSL"</title>
\r\n
<author>лермонтов</author>
\r\n
</tutorial>
文件夹 doc 中有其他符号,如 \r 和 \n,如何在复制时删除它们,或者如何修复 \r 和 \n 在我的文件中的出现。
顺便说一句,这是我将文件插入数据库的方式
create or replace function 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;$$;
这是在 psql 中
insert into mydocs(docform,content)
values (3, convert_from(bytea_import('D:/html/ex08.xml'), 'utf-8'));
不太清楚(对我而言)内容到底是什么样的,但是这些变体之一应该有效:
copy (select (replace(content, e'\r\n', '')) from mydocs where id=30 ) to 'c:/data/ex10.xml';
copy (select (replace(content, '\r\n', '')) from mydocs where id=30 ) to 'c:/data/ex10.xml';
有一个 table 有 3 列 mydocs(id serial, docform integer, content text)
copy (select (content) from mydocs where id=30 ) to 'D:/html/ex10.xml'
;
我使用此表达式选择 1 行 ( id=30 ) 并将其中的 (content text) 放入具有路径的文件夹中。 它有效但是
<?xml version="1.0" encoding="utf-8"?>
\r\n
<tutorial>
\r\n
<title>"Заметки об XSL"</title>
\r\n
<author>лермонтов</author>
\r\n
</tutorial>
文件夹 doc 中有其他符号,如 \r 和 \n,如何在复制时删除它们,或者如何修复 \r 和 \n 在我的文件中的出现。 顺便说一句,这是我将文件插入数据库的方式
create or replace function 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;$$;
这是在 psql 中
insert into mydocs(docform,content)
values (3, convert_from(bytea_import('D:/html/ex08.xml'), 'utf-8'));
不太清楚(对我而言)内容到底是什么样的,但是这些变体之一应该有效:
copy (select (replace(content, e'\r\n', '')) from mydocs where id=30 ) to 'c:/data/ex10.xml';
copy (select (replace(content, '\r\n', '')) from mydocs where id=30 ) to 'c:/data/ex10.xml';