class Struggle::Sql
Public Class Methods
dump(config)
click to toggle source
config => {“class_name”: [“Member”], “file”: “1.sql”,“adapter”: “oracle”} class_name is ActiveRecord; file is backup sql file
# File lib/struggle/sql.rb, line 17 def dump(config) config["file"] = config["file"].blank? ? "db.sql" : config["file"] File.open(config["file"], "w+") do |file| config["class_name"].each do |class_name| obj = eval(class_name) obj.all.each do |o| attrs = o.attributes names = [] values = [] attrs.each do |k, v| names << k value = v if v.class == Date value = v.strftime("%Y-%m-%d") value = "TO_DATE('#{value}', 'YYYY-MM-DD')" if config["adapter"] && config["adapter"].downcase == "oracle" elsif v.class == ActiveSupport::TimeWithZone value = v.strftime("%Y-%m-%d %H:%M:%S") value = "TO_TIMESTAMP('#{value}', 'YYYY-MM-DD HH24:MI:SS.FF6')" if config["adapter"] && config["adapter"].downcase == "oracle" else value = "'#{v}'" end values << value end file.puts "INSERT INTO #{obj.table_name} (#{names.join(',')}) VALUES (#{values.join(',')});\r\n" end end end end
dump_yaml(yaml_file = "config/tsql_config.yml")
click to toggle source
按配置文件导出sql文件。 yaml_file 配置文件yml位置。
# File lib/struggle/sql.rb, line 8 def dump_yaml(yaml_file = "config/tsql_config.yml") config = YAML.load_file(yaml_file) config.each do |k, v| self.dump(v) end end