Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Psql输出中隐藏结果集装饰_Sql_Postgresql - Fatal编程技术网

如何在Psql输出中隐藏结果集装饰

如何在Psql输出中隐藏结果集装饰,sql,postgresql,Sql,Postgresql,如何隐藏psql输出中的列名和行数 我正在通过psql运行SQL查询: psql --user=myuser -d mydb --output=result.txt -c "SELECT * FROM mytable;" 我期望的结果是: 1,abc 2,def 3,xyz 但我得到的却是: id,text ------- 1,abc 2,def 3,xyz (3 rows) 当然,在事实发生后过滤掉最上面的两行和最下面的一行并不是不可能的,但是有没有一种方法可以只用psql来实现呢?翻阅

如何隐藏psql输出中的列名和行数

我正在通过psql运行SQL查询:

psql --user=myuser -d mydb --output=result.txt -c "SELECT * FROM mytable;"
我期望的结果是:

1,abc
2,def
3,xyz
但我得到的却是:

id,text
-------
1,abc
2,def
3,xyz
(3 rows)
当然,在事实发生后过滤掉最上面的两行和最下面的一行并不是不可能的,但是有没有一种方法可以只用psql来实现呢?翻阅手册页,我看到了控制字段分隔符的选项,但没有看到隐藏无关输出的选项。

您可以使用-t或-tuples only选项:


除了result.txt需要是绝对路径之外。“复制”命令还支持更智能的CSV格式;请参阅。

您还可以从psql中重定向输出并使用相同的选项。使用\o设置输出文件,使用\t仅输出元组,或使用\pset仅关闭行计数页脚

\o /home/flynn/queryout.txt
\t on
SELECT * FROM a_table;
\t off
\o
或者

\o /home/flynn/queryout.txt
\pset footer off
. . .
通常你会想要设置-A和-F


您可以找到完整bash调用的示例:

或者,如果您想要页眉而不是行计数页脚,那么使用-pset=footer=offCOPY运行psql确实是一个有效的替代方法,但是文件将在服务器上结束,而不是在运行psql的机器上…@fvu:好的观点。我通常在服务器上运行psql,所以对我来说这不是问题。如果您希望文件最终位于客户机文件系统上,请使用psql,即在复制命令前面添加反斜杠,我认为@GabrielBurt comment应该是一个独立的答案。这正是我想要生成一个带有页眉但没有令人讨厌的nnnn行页脚的csv的目的。psql-U username-X-a-w-t-c select count*从yourtable生成的结果是:1
\o /home/flynn/queryout.txt
\t on
SELECT * FROM a_table;
\t off
\o
\o /home/flynn/queryout.txt
\pset footer off
. . .
    # generate t.col1, t.col2, t.col3 ...
    while read -r c; do test -z "$c" || echo  , $table_name.$c  | \
       perl -ne 's/\n//gm;print' ; \
       done < <(cat << EOF | PGPASSWORD=${postgres_db_useradmin_pw:-} \
       psql -A -F  -v -q -t -X -w -U \
       ${postgres_db_useradmin:-} --port $postgres_db_port --host $postgres_db_host -d \
       $postgres_db_name -v table_name=${table_name:-}
    SELECT column_name
    FROM information_schema.columns
    WHERE 1=1
    AND table_schema = 'public'
    AND table_name   =:'table_name'  ;
    EOF
    )
    echo -e "\n\n"