我试图打印执行的查询和PostgreSQL上的查询结果。我有一个简单的ant sql任务,使用标准postgresql JDBC驱动程序。
<?xml version="1.0"?>
<project name="Ant SQL task" default="sql">
<target name="sql">
<echo>Ant SQL task</echo>
<sql
driver="org.postgresql.Driver"
url="jdbc:postgresql://hostname:port/database"
userid="user"
password="password"
src="script.sql"
print="yes"
>
</sql>
</target>
</project>
脚本。SQL只包含
select 1 as test;
我得到这样的输出:
info:
[sql] Executing resource: script.sql
[sql] test
[sql] 1
[sql]
[sql] 0 rows affected
[sql] 1 of 1 SQL statements executed successfully
我想在输出中像这样打印选择查询:
info:
[sql] Executing resource: script.sql
[sql] select 1 as test;
[sql] test
[sql] 1
[sql]
[sql] 0 rows affected
[sql] 1 of 1 SQL statements executed successfully
是否有一种方法可以在输出中包含选择查询?
1。将jdbc的日志级别设置为DEBUG(2)。只是现在你的日志文件里的信息不是太少,而是太多了。
2)。添加一些查询:
SELECT 1 as foo, (SELECT query FROM pg_stat_activity);
foo | query
-----+--------------------------------------------------------
1 | SELECT 1 as foo, (SELECT query FROM pg_stat_activity);
(1 row)
注意,这将给你所有正在运行的查询,而不仅仅是当前的查询。您可以通过pg_stat_activity
中众多列中的一列来缩小范围,但这可能是不必要的,除非这是一个繁忙的系统。如果您决定这样做,请在连接参数中设置ApplicationName
。
3)。在script.sql
中添加手动重复下一个查询的行:
SELECT 'SELECT 1;';
SELECT 1;
SELECT 'SELECT 2;';
SELECT 2;
4)。放弃ant sql模块并使用exec来运行psql -e -f script.sql
:
SELECT 1;
?column?
----------
1
(1 row)
可以省略-P footer=OFF
的行数