2017-02-26 9 views
0

mydocs(idシリアル、docform整数、内容テキスト)の3列の表がありますpostgresqlでコピーを使用していますか?

copy (select (content) from mydocs where id=30) to 'D:/html/ex10.xml';

この式で1行(id = 30)を選択し、そこから(コンテンツテキスト)をパスのあるフォルダに配置します。フォルダドキュメントでそれが動作 しかし

<?xml version="1.0" encoding="utf-8"?> 
\r\n 
<tutorial> 
\r\n 
<title>&quot;Заметки об XSL&quot;</title> 
\r\n 
<author>лермонтов</author> 
\r\n 
</tutorial> 

は、私はそれをコピー、またはと\ nは私のファイルに\ rの外観を修正する方法ときにそれらを削除する方法\ 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')); 

答えて

0

それだのが1、正確に内容がどのように見えるか(私にとって)非常に明確ではありませんこれらの亜種はうまくいくはずです:

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'; 
+0

実際に最初の行は正しいです!ありがとうございました –

関連する問題