这是我的.CSV档案的一个例子:
column1,column2
data,moreData
foo,bar
cats,dogs
使用Ruby和sqlite3 gem,有没有办法制作SQLite数据库并将.CSV数据导入其中?
答案 0 :(得分:5)
我不相信通过CSV导入/导出数据是通过sqlite3
gem本身完成的。您可以通过CSV库将数据导入/导出Ruby对象,然后只需通过ActiveRecord
或者您正在使用的任何ORM将数据读取/写入数据库。
FasterCSV应该在Ruby中为你做。如果你碰巧也在使用Rails 3.2,我相信FasterCSV是Rails'CSV
lib幕后的默认实现。
答案 1 :(得分: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]]
答案 2 :(得分:0)
您可以从ruby调用sqlite3二进制文件:
%x(
sqlite3 "#{pathToDatabase}" << EOF
.mode csv
.separator ',' "\\\\n"
.import "#{pathToCsvFile}" "#{csvTableName}"
EOF
)