【问题标题】:How to count the number of queries executed in postgres?如何计算在 postgres 中执行的查询数?
【发布时间】:2015-06-02 07:49:04
【问题描述】:

我有 2 个 sql 文件,每个文件包含 100 个查询。 我需要从第一个 sql 文件执行前 10 个查询,然后从第二个 sql 文件执行前 10 个查询。从第二个 sql 文件执行 10 个查询后,第 11 个查询应该从第一个 sql 文件开始执行。

有没有办法计算已完成的查询数量? 如何暂停第一个文件中的查询执行并在完成一定数量的查询后恢复它?

【问题讨论】:

  • 只是出于好奇:为什么?
  • 如果每个查询都在单独的行中,您可以使用 shell 从一个文件中获取 n 行,执行它们,从第二个文件中获取 m 行,执行它们等等?这里我们没有暂停,我们只是在文件之间切换。

标签: postgresql perl-module


【解决方案1】:

您不能使用psql 命令行客户端执行此操作,它的包含文件处理仅限于读取文件并将整个内容发送到服务器查询逐个查询。

您需要编写一个简单的 Perl 或 Python 脚本,使用 DBD::Pg (Perl) 或 psycopg2 (Python) 读取输入文件并发送查询。

拆分输入需要解析 SQL,这需要一点小心。您不能只拆分为分号查询。您必须处理引用的"identifier"s 和'literal's 以及E'escape literals' 和$dollar$ quoting $dollar$。您也许可以找到现有代码来帮助您解决此问题,或者使用数据库客户端驱动程序中的功能来完成。

或者,如果您可以修改输入文件以在其中插入条目,您可以使用多个 psql 实例运行它们,并使用咨询锁定作为互锁,使它们在设定点相互等待。详情见explicit locking。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2019-03-27
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    相关资源
    最近更新 更多