2017-12-21 1 views
0

一時的なテーブルを作成する関数を生成し、必要なものがすべて生成されるまでテキストファイルを作成するために使用します。カスタムテキストファイル名postgres 9.6

私が作成するファイルの名前では、パラメータを渡す必要があります(基本的にデータベースのテーブルの列の値)が、値を渡そうとするとエラーが出ます特殊文字を持つ名前でファイルを作成します。

そして、これまでに以下のことを試してみました:

CREATE OR REPLACE FUNCTION sp_campos_base2() 
RETURNS TEXT AS $$ 

DECLARE 
    registro TEXT DEFAULT ''; 
    var1 TEXT; 
... 
BEGIN 

    var1 := 'LO_LOGRE'; 
.... 
EXECUTE $$COPY (select * from tmp1) to '/tmp/editores/prueba_$$ || var1 || $$_OMS.txt' WITH DELIMITER E'\t' CSV HEADER ENCODING 'LATIN1'$$; 
..... 
COPY (select * from tmp1) to '/tmp/editores/prueba_|| var1 ||_OMS.txt' WITH DELIMITER E'\t' CSV HEADER ENCODING 'LATIN1'; 
.... 

bashの構文を使用してみてくださいまで:

COPY (select * from tmp1) to '/tmp/editores/prueba_`var1`_OMS.txt' WITH DELIMITER E'\t' CSV HEADER ENCODING 'LATIN1'; 
.... 

は、COPYコマンドでファイル名をカスタマイズすることが可能ですか?

答えて

0

例:

do 
$$ 
declare 
var1 text := 'some'; 
begin 
execute format('copy pg_database to %L','/tmp/'||var1||'.csv'); 
end; 
$$ 
; 

とチェック:

t=# \! head -n 2 /tmp/some.csv 
postgres 10 6 C UTF-8 f t -1 12668 858 1 1663 \N 
t 10 6 C UTF-8 f t -1 12668 858 1 1663 \N 
+0

バオツン はどうもありがとうございました、それは私が私の問題を解決するため、完全に働きました。 –

関連する問題