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