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
|
# File 'lib/data_dumper.rb', line 11
def self.load(path)
conn = ActiveRecord::Base.connection
ActiveRecord::Base.transaction do
files = Dir[File.join(path, "*.sql")]
puts "Disabling triggers in all tables to be loaded"
files.each do |filename|
table_name = File.basename(filename, ".sql")
conn.execute "ALTER TABLE #{table_name} DISABLE TRIGGER ALL"
end
puts "Truncating existing data"
table_names = files.map do |filename|
File.basename(filename, ".sql")
end
conn.execute "TRUNCATE #{table_names.join(", ")} CASCADE"
puts "Loading new data from #{path.inspect}..."
files.each do |filename|
quoted_filename = conn.quote(File.expand_path(filename))
table_name = File.basename(filename, ".sql")
puts table_name
conn.execute "COPY #{table_name} FROM #{quoted_filename} CSV"
end
puts "Enabling triggers in all tables"
files.each do |filename|
table_name = File.basename(filename, ".sql")
conn.execute "ALTER TABLE #{table_name} ENABLE TRIGGER ALL"
end
end
puts "Analyzing the data, for best performance"
conn.execute "ANALYZE"
end
|