2016-07-27 17 views
5

Yaklaşık 2 saat sürmesi gereken bir ruby ​​komut dosyasıyla SQL sorgusu çalıştırıyorum.sql sorgu bitirmeden önce Ruby komut dosyası sonu

Komut dosyasının yalnızca sorgu işlemi bittiğinde çıkıp/çıkacağından nasıl emin olabilirim, şu anda komut dosyasını çalıştırdım, sorguyu DB'ye iletiyor ve sorgu hala çalışırken komut dosyasını hemen kapatıyor DB üzerinde. Sorgunun çoğu, ekler, bırakma tabloları, tablo oluşturma gibi komutlardır.

#!/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(" 
... 
    ") 

Ben

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

sorgu bitirmek için ben kontrol aynı komut başka bir sorgu eklemek istiyorum, çünkü, beklemek konusunda bir fikrin bitirmek sadece ilkinden sonra bu sorguyu çalıştırmak istediğiniz bitirdikten sonra ilk sorgu. official documentation itibaren

+0

Sorgunuz nedir? –

+0

büyük bir sorgu, ancak sql sorgusuyla ilgili mi? sorgu çalıştığı için, yalnızca komutumun işlemi tamamladığında çıkmasını istiyorum. –

+0

Peki, istemci sorgu sonucunu bekliyor olmalıdır. İstemcinin beklemesini engelleyen bir şey olmadığı sürece. –

cevap

4

:

Çoklu sonuç Ayrıca birden çok sonuç kümesi alabilirsiniz

ayarlar. Bunun çalışması için Mysql2 :: Client :: MULTI_STATEMENTS bayrakları ile bağlanmak için 'a ihtiyacınız vardır. Birden çok sonuç kümeleri, tek sonuç kümesinden daha fazlasına geri dönen saklı yordamlar ve birkaç SQL ifadesinin client.query çağrısı için tek bir çağrısı olarak kullanılabilir.

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 
İlgili konular