【发布时间】:2016-10-19 18:58:13
【问题描述】:
运行 SQL 文件时如何将内容打印到 postgres 输出控制台?
我使用以下命令运行我的 SQL 文件:
PGPASSWORD=admin;
psql --host "localhost" --port 5432 --username "postgres" -d "aula21" < $1
我搜索了很多,我发现了这个策略:
DO $$ BEGIN
RAISE INFO ' ';
RAISE INFO ' ';
RAISE INFO '1...';
END $$;
SELECT paciente.nome
FROM paciente
WHERE paciente.idade =
( SELECT MIN( paciente.idade )
FROM paciente );
DO $$ BEGIN
RAISE INFO ' nome ';
RAISE INFO '-----------------';
RAISE INFO 'Maria Aparecida';
RAISE INFO ' ';
RAISE INFO ' ';
RAISE INFO ' ';
RAISE INFO '2...';
END $$;
SELECT consulta.data, consulta.hora
FROM consulta
WHERE consulta.valor =
( SELECT MAX( consulta.valor )
FROM consulta );
DO $$ BEGIN
RAISE INFO ' Data hora valor';
RAISE INFO '"2002-03-21"; "09:00:00";122.0000';
RAISE INFO ' ';
RAISE INFO ' ';
RAISE INFO ' ';
RAISE INFO '3...';
END $$;
生成以下输出:
INFO:
INFO:
INFO: 1...
DO
nome
-----------------
Maria Aparecida
(1 row)
INFO: nome
INFO: -----------------
INFO: Maria Aparecida
INFO:
INFO:
INFO:
INFO:
INFO:
INFO:
INFO: 2...
DO
data | hora
------------+----------
2002-03-21 | 09:00:00
(1 row)
INFO: Data hora valor
INFO: "2002-03-21"; "09:00:00";122.0000
INFO:
INFO:
INFO:
INFO:
INFO:
INFO:
INFO: 3...
DO
但是有没有更好的方法来写成下面这样?
print ' ';
print ' ';
print '1...';
SELECT paciente.nome
FROM paciente
WHERE paciente.idade =
( SELECT MIN( paciente.idade )
FROM paciente );
print ' nome ';
print '-----------------';
print 'Maria Aparecida';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print '2...';
SELECT consulta.data, consulta.hora
FROM consulta
WHERE consulta.valor =
( SELECT MAX( consulta.valor )
FROM consulta );
print ' Data hora valor';
print '"2002-03-21"; "09:00:00";122.0000';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print '3...';
这一点也可以通过以下方式实现:
\echo 'INFO: '
\echo 'INFO: 1...'
\echo 'INFO: '
SELECT paciente.nome
FROM paciente
WHERE paciente.idade =
( SELECT MIN( paciente.idade )
FROM paciente )
\echo 'INFO: nome '
\echo 'INFO: -----------------'
\echo 'INFO: Maria Aparecida'
\echo 'INFO: '
\echo 'INFO: '
\echo 'INFO: '
\echo 'INFO: '
\echo 'INFO: '
\echo 'INFO: 2...'
\echo 'INFO: '
SELECT consulta.data, consulta.hora
FROM consulta
WHERE consulta.valor =
( SELECT MAX( consulta.valor )
FROM consulta )
\echo 'INFO: Data hora valor'
\echo 'INFO: "2002-03-21" "09:00:00"122.0000'
\echo 'INFO: '
\echo 'INFO: '
\echo 'INFO: '
\echo 'INFO: '
\echo 'INFO: '
\echo 'INFO: 3...'
\echo 'INFO: '
【问题讨论】:
-
不是真的 - 执行 SQL 时用户友好的输出恐怕不是一个经常出现的用例。编写和执行它的人通常都知道它:) 我可以问你为什么需要它吗?
标签: sql postgresql debugging console