這裏有一個我的.csv文件例如:使用Ruby和sqlite3的寶石如何導入CSV文件到SQLite數據庫與sqlite3的寶石的Ruby
column1,column2
data,moreData
foo,bar
cats,dogs
,有沒有一種方法,使一SQLite數據庫並將.CSV數據導入到它?
這裏有一個我的.csv文件例如:使用Ruby和sqlite3的寶石如何導入CSV文件到SQLite數據庫與sqlite3的寶石的Ruby
column1,column2
data,moreData
foo,bar
cats,dogs
,有沒有一種方法,使一SQLite數據庫並將.CSV數據導入到它?
使用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]]
嗯,看起來,在它的根目錄下,腳本必須遍歷CSV文件並將行/項插入到數據庫中。我對麼? – Username 2012-08-08 18:35:47
我相信你可以使用Ruby的枚舉方法(例如[#each_slice](http://rdoc.info/stdlib/core/Enumerable:each_slice))來批量說500,然後一次執行所有的(你只需要製作正確的sql並將其與正確的數組匹配即可。 – 2012-08-08 22:53:39