ruby - 使用 Ruby 脚本将 CSV 文件导入 sqlite3

标签 ruby csv sqlite

我有一个 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/

相关文章:

ruby - 有人知道一个好的 Ruby ePub 库吗?

ruby - Elasticsearch:有条件地对2个字段排序,如果存在则用1替换另一个

c# - 二维字典或查找表?

c++ - 使用 token 仅解析 csv 文件中的特定列

python - 在一个线程中创建的对象只能在同一个线程中使用

css - Rails 和 Compass - 为每个 View / Controller 创建不同 CSS 的正确方法是什么?

ruby - HTTParty parsed_response 返回一个 String 而不是 Hash

csv - 将 CouchDB 信息导出到 CSV 的最简单方法是什么?

c# - Windows Phone 7.1 使用 sql-net 和 C# Sqlite 组合的 "ref"与 "out"关键字错误

android - "?"附近的 execSQL SQLiteException