Ruby脚本在sql查询完成之前结束

时间:2016-07-27 12:19:08

标签: mysql sql ruby

我使用ruby脚本运行SQL查询,该脚本大约需要2个小时。

如何确保脚本仅在查询过程结束时才会退出/结束,因为现在我运行了脚本,它将查询传递给数据库,并且在查询仍在运行时脚本立即关闭DB。 大多数查询都是插入,删除表,创建表等命令。

#!/usr/bin/env ruby

require 'mysql2'
client = Mysql2::Client.new(:host => ENV_YML['host'], :username => ENV_YML['username'], :password => ENV_YML['password'], :database => ENV_YML['dbtemp'], :flags => Mysql2::Client::MULTI_STATEMENTS)


client.query("
...
  ")

我想在第一次完成后才运行此查询

client.query("SELECT ;").each do |row|
....
end

知道如何等待查询完成,因为我想在完成后检查第一个查询的同一个脚本中添加另一个查询。

1 个答案:

答案 0 :(得分:4)

来自official documentation

  

多个结果集

     

您还可以检索多个结果集。为此你需要工作   连接标志Mysql2 :: Client :: MULTI_STATEMENTS。多   结果集可以与返回超过的存储过程一起使用   一个结果集,以及将多个SQL语句捆绑成一个   打电话给client.query。

client = Mysql2::Client.new(:host => "localhost", :username => "root", :flags => Mysql2::Client::MULTI_STATEMENTS)

result = client.query('...')

while client.next_result
  result = client.store_result
  # result now contains the next result set
end