在这里,威廉,给这个代码一试。这是Ruby代码将CSV导入数据库,忽略created_at和updated_at。
运行它
- 将代码粘贴到一个新的文件。我们称之为import.rb
- 编辑文件。将
self.table_name = "mytablename"
中的单词“mytablename”更改为要导入的表的实际名称。
- 接近文件末尾,将mydb.db替换为Sqlite3文件的实际名称。它应该是文件的相对路径(相对于import.rb)。
在命令行中键入:
gem install active_record sqlite3
ruby import.rb path/to/csvfile.csv
(如果你是在Mac上,使用“sudo的创业板安装,而不是仅仅 “创业板安装”)
好,下面的代码:
require 'rubygems'
require 'csv'
require 'active_record'
require 'sqlite3'
ActiveRecord::Base.configurations = YAML::load(DATA)
ActiveRecord::Base.establish_connection('development')
class Record < ActiveRecord::Base
self.table_name = "mytablename" # <=== REPLACE THIS with your table name
end
CSV.foreach ARGV[0], :headers => true do |row|
print "."
hash = Hash[row]
hash.delete("updated_at")
hash.delete("created_at")
Record.create! hash
end
puts "\nDone."
__END__
development:
adapter: sqlite3
database: mydb.db # <=== REPLACE THIS with a relative path to your sqlite3 DB
pool: 5
timeout: 5000
我通过重新创建表解决了这个问题,而不created_at起来dated_at时间戳。然后使用sqlite3控制台将文件导入临时表,然后将临时表中的信息导入目标表。 – 2013-02-13 01:54:49