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

Use*_*ame 3 ruby csv sqlite sqlite3-ruby

这是我的.CSV文件的示例:

column1,column2
data,moreData
foo,bar
cats,dogs
Run Code Online (Sandbox Code Playgroud)

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

jef*_*unt 5

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

FasterCSV应该在Ruby中为您完成.如果你碰巧也在使用Rails 3.2,我相信FasterCSV是Rails'lib幕后的默认实现CSV.


Jos*_*eek 5

使用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]]
Run Code Online (Sandbox Code Playgroud)