我有类似的功能-
CREATE
OR REPLACE FUNCTION ind (bucket text) RETURNS table (
middle character varying (100),
last character varying (100)
) AS $body$ BEGIN return query
select
fname as first,
lname as last
from all_records
; END;
$body$ LANGUAGE PLPGSQL;
如何将select ind ('Mob')
的结果输出到tsv文件中?
我希望输出看起来像这样-
first last
MARY KATHERINE
答案 0 :(得分:0)
您可以使用COPY命令 示例:
COPY (select * from ind('Mob')) TO '/tmp/ind.tsv' CSV HEADER DELIMITER E'\t';
文件'/tmp/ind.tsv'将包含您的数据
答案 1 :(得分:0)
出于某种原因,Postgres不允许使用tsv的标头进行复制。
如果您使用的是基于Linux的系统,则可以使用以下脚本来完成此操作:
this
或者,如果您的脚本很长,并且您不想使用-c命令传递它,则可以使用.sql文件中的相同方法,请使用“ --quiet”以避免将通知传递到文件中
#create file with tab delimited column list (use \t between each column name)
echo -e "user_id\temail" > user_output.tsv
#now you can append the results of your query to that file by copying to STDOUT
psql -h your_host_name -d your_database_name -c "\copy (SELECT user_id, email FROM my_user_table) to STDOUT;" >> user_output.tsv