Backup di un database con ruby

In questo tutorial vedremo come creare uno script in ruby per effettuare il backup di tutto o una parte di un database. Il risultato sarà un file con le istruzioni sql.

require 'dbi'  
tables = "tabella_per_backup1", "tabella_per_backup2" 
data = Array.new 
dbh = DBI.connect("DBI:Mysql:my_db", "user", "psswd" )  
tables.each{ |table|  
    # visualizza le tabelle  
    str = "SHOW CREATE table #{table};" 
    sth = dbh.prepare( str )  
    sth.execute  
    data.push sth.fetch[1].gsub( /`/, "" ) + ";" 
    # e il loro contenuto 
    str = "SELECT * FROM #{table};" 
    sth = dbh.prepare( str )  
    sth.execute  
    # fa un ciclo e crea codice sql
    while row=sth.fetch  
        insert = "INSERT INTO #{table} VALUES(" 
        first = true 
        row.each{ |val|  
            if val.nil?  
                insert << ", null" 
            else 
                val = "#{val}" 
                val.gsub!( /"/, "\\\"" )  
                first == true ? insert << "\"#{val}\"" : insert << ",\"#{val}\"" 
            end 
            first = nil 
        }  
        insert << ");" 
        data.push insert  
    end 
}  
dbh.disconnect 
# stampa il tutto
data.each_index{ |i|  
    puts data[i]  
}