Top Level Namespace

Instance Method Summary collapse

Instance Method Details

#sqldump(user, pass, db) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/sqldump.rb', line 5

def sqldump(user, pass, db)
  begin
    my = Mysql.new('localhost', user, pass, db)
    res = my.query("show tables")
    tables = []
    num_tables = res.num_rows
    num_tables.times do
      tables.push(res.fetch_row)
    end
    tables.each do |tbl|
      res = my.query("show create table #{tbl}")
      create = ''
      res.each_hash do |x|
        create = "#{x['Create Table']};"
      end
      puts create
      res = my.query("select * from #{tbl}")
      num_rows = res.num_rows
      content = []
      num_rows.times do
      content.push(res.fetch_row.join("_____"))
      end
                  res = my.query("select * from #{tbl}")
                  num_rows = res.num_rows
                  content = []
                  num_rows.times do
                          content.push(res.fetch_row.join("_____"))
                  end
      content.each do |cont|
        res = my.query("explain #{tbl}")
        num_cats = res.num_rows
        y = 1
        cats = []
        print "insert into #{tbl}("
        res.each_hash do |x|
          print "#{x['Field']}" if y == num_cats
          print "#{x['Field']}, " if y != num_cats
          y += 1
        end
        print ") values("
          cont = cont.gsub(/'/, "\\\\'")
          cont = cont.gsub(/_____/, "', '")
          puts "'#{cont}');"
      end
    end
  rescue Mysql::Error => e
    puts "MySQL dump of #{db} failed!"
    puts "#{e.errno}: #{e.error}"
    puts "Exiting for safety"
    exit
  ensure
    my.close
  end
end