我有一个 ruby 脚本,它将从某些 CSV 文件中读取数据并将其导入到 sqlite 数据库中。 我可以使用以下命令从控制台轻松完成此任务:
sqlite> .import <filename> <tablename>
sqlite> .import test.csv PROJECT_REPORT
我怎样才能实现同样形式的Ruby脚本?
我正在做类似以下的事情(只是一个工作安排):
CSV.foreach("timelog.csv") do |row|
database.execute("INSERT INTO PROJECT_REPORT(
Date,User,Activity,Comment)
values
(#{row[0]}, '#{row[1]}', '#{row[2]}', '#{row[3]}') ")
end
最佳答案
如果这是一次性工作,并且您有一个可以运行的简单脚本,为什么不坚持使用已有的脚本呢?如果您需要增加 ruby 脚本并想要扩展它,请查看 DataMapper (或其他 ORM)作为 SQLite 数据库的接口(interface)。创建一个简单的类来包含日期、用户、事件和评论字段,并让 DataMapper 完成数据库的繁重工作。
更新了数据映射器示例 这是 datamapper 实现的一个简单伪示例。 尚未测试!
#datamapper configuration here
#.
#.
class UserActivity
include DataMapper::Resource
property :id, Serial
property :log_date, DateTime
property :user, Text
property :activity Text
property :comment Text
property :created_at, DateTime
end
所以要在上面的示例中使用它......
CSV.foreach("timelog.csv") do |row|
userActivity = UserActivity.new( :log_date => row[0], :user => row[1], :activity => row[2], :comment => row[3])
userActivity.save!
end
显然这不是一个完整的解决方案,但它可以帮助您入门。
关于ruby - 使用 Ruby 脚本将 CSV 文件导入 sqlite3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9502164/