繁体   English   中英

如何使用sqlite3 gem将CSV文件导入sqlite数据库中的Ruby

[英]How do I import a CSV file into an SQLite database with the sqlite3 gem for Ruby

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

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

使用Ruby和sqlite3 gem,是否可以创建SQLite数据库并将.CSV数据导入其中?

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

FasterCSV应该在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]]

您可以从ruby调用sqlite3二进制文件:

%x(
sqlite3 "#{pathToDatabase}" << EOF
.mode csv
.separator ',' "\\\\n"
.import "#{pathToCsvFile}" "#{csvTableName}"
EOF
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM