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]
}


Leave Your Response