我有2个sql文件,每个文件包含100个查询。 我需要从第一个sql文件执行前10个查询,然后从第2个sql文件执行前10个查询。从第二个sql文件执行10个查询后,第11个查询应该从第一个sql文件开始执行。
有没有办法记录已完成的查询数量? 如何在第一个文件中暂停查询执行并在完成一定数量的查询后恢复它?
答案 0 :(得分:0)
您无法使用psql
命令行客户端执行此操作,其包含文件处理仅限于读取文件并将整个内容发送到服务器查询。
您希望编写一个简单的Perl或Python脚本,使用DBD::Pg
(Perl)或psycopg2
(Python)来读取输入文件并发送查询。
拆分输入需要解析SQL,这需要一点小心。你不能只用分号分成查询。您必须处理引用的"identifier"
和'literal'
以及E'escape literals'
和$dollar$ quoting $dollar$
。您可以找到现有代码来帮助您完成此操作,或者使用数据库客户端驱动程序中的功能来执行此操作。
或者,如果您可以修改输入文件以在其中插入条目,则可以使用多个psql
实例运行它们,并使用建议锁定作为互锁,以使它们在设定点等待彼此。有关详细信息,请参阅explicit locking。