用PostgreSQL打印已执行的查询和结果



我试图打印执行的查询和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的行数

相关内容

  • 没有找到相关文章

最新更新