2016-07-27 4 views
5

Rubyスクリプトを使用してSQLクエリを実行すると、約2時間かかります。SQLクエリ終了前のRubyスクリプトの終了

クエリの処理が終了した時点でスクリプトが終了するかどうかを確認するには、今すぐスクリプトを実行し、クエリをDBに渡し、クエリが実行中にすぐにスクリプトを閉じるためですDB上で ほとんどのクエリは、insert、drop table、create tableなどのコマンドです。

#!/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の後にこのクエリを実行します終了後の最初のクエリofficial documentationから

+0

どのようなクエリですか? –

+0

それは大きなクエリですが、それはSQLクエリに関連していますか?クエリが機能するので、私はちょうど私のスクリプトがプロセスを終了するときに終了します。 –

+0

さて、クライアントはクエリ結果を待っているはずです。クライアントに待たせてくれる何かがない限り。 –

答えて

4

複数の結果は、あなたはまた、複数の結果セットを取得することができます

を設定します。これを行うには、フラグMysql2 :: Client :: MULTI_STATEMENTSに接続するために が必要です。 結果セットは、 より多くの結果セットを返し、複数のSQL文を1つの 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 
関連する問題