如何使用sqlite3 gem for Ruby将CSV文件导入SQLite数据库

如何使用sqlite3 gem for Ruby将CSV文件导入SQLite数据库,ruby,sqlite,csv,sqlite3-ruby,Ruby,Sqlite,Csv,Sqlite3 Ruby,下面是我的.CSV文件的一个示例: column1,column2 data,moreData foo,bar cats,dogs 使用Ruby和sqlite3 gem,有没有办法创建SQLite数据库并将.CSV数据导入其中?我不相信通过CSV导入/导出数据是通过sqlite3gem本身完成的。您可以通过CSV库将数据输入/输出Ruby对象,然后只需通过ActiveRecord或您正在使用的任何ORM将数据读取/写入DB即可 应该用Ruby为你做。如果您碰巧也在使用Rails 3.2,我相信

下面是我的.CSV文件的一个示例:

column1,column2
data,moreData
foo,bar
cats,dogs

使用Ruby和sqlite3 gem,有没有办法创建SQLite数据库并将.CSV数据导入其中?

我不相信通过CSV导入/导出数据是通过
sqlite3
gem本身完成的。您可以通过CSV库将数据输入/输出Ruby对象,然后只需通过
ActiveRecord
或您正在使用的任何ORM将数据读取/写入DB即可


应该用Ruby为你做。如果您碰巧也在使用Rails 3.2,我相信FasterCSV是Rails的
CSV
lib的默认后台实现。

用CSV lib解析CSV,然后像正常一样插入它

require "sqlite3"
require 'csv'

db = SQLite3::Database.new ":memory:"

# Create a database
rows = db.execute <<-SQL
  create table users (
    name varchar(30),
    age int
  );
SQL

csv = <<CSV
name,age
ben,12
sally,39
CSV

CSV.parse(csv, headers: true) do |row|
  db.execute "insert into users values ( ?, ? )", row.fields # equivalent to: [row['name'], row['age']]
end

db.execute( "select * from users" ) # => [["ben", 12], ["sally", 39]]
需要“sqlite3”
需要“csv”
db=SQLite3::Database.new”:内存:
#创建数据库

rows=db.execute您可以从ruby调用sqlite3二进制文件:

%x(

sqlite3“#{pathToDatabase}”是的,我想我需要以其他方式解析CSV文件。感谢tip.Hm,似乎在它的根目录下,脚本必须循环遍历CSV文件并将行/项插入数据库。我说得对吗?我确信您可以使用Ruby的可枚举方法(例如)要成批执行(比如500个),然后一次执行所有操作(只需生成正确的sql并将其与正确的数组相匹配)。