Ant sql任务 - 用PostgreSQL打印执行的查询和结果

时间:2016-09-21 16:35:40

标签: postgresql ant

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

>>> import requests
>>> from pprint import pprint 

>>> r = requests.get('http://www.reddit.com/reddits.json', headers= {'User-Agent': 'me'})
>>> data = r.json()
>>> pprint(data.keys())

script.sql仅包含

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

我收到了这个输出:

select 1 as test;

我想在输出中打印select查询,如下所示:

info:
      [sql] Executing resource: script.sql
      [sql] test
      [sql] 1
      [sql]
      [sql] 0 rows affected
      [sql] 1 of 1 SQL statements executed successfully

有没有办法在输出中包含选择查询?

1 个答案:

答案 0 :(得分:0)

1。)为jdbc设置loglevel为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省略行数。