2016-09-21 38 views
0

我试图打印执行的查询以及PostgreSQL上的查询结果。我有简单的ant sql任务,使用标准的postgresql JDBC驱动程序。Ant sql任务 - 使用PostgreSQL打印执行的查询和结果

<?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> 

的script.sql containts只是

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 

是否有办法包括e输出中的选择查询?

回答

0

1.)将loglevel设置为针对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)沟蚂蚁SQL模块,并使用exec运行psql -e -f script.sql代替:

SELECT 1; 
?column? 
---------- 
     1 
(1 row) 

你可以请用-P footer=OFF省略行数。