4

これが私の.CSVファイルの例です:

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

Rubyとsqlite3gemを使用して、SQLiteデータベースを作成し、それに.CSVデータをインポートする方法はありますか?

4

3 に答える 3

6

CSVをcsvlibで解析し、通常のように挿入します。

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]]
于 2012-08-08T18:01:19.413 に答える
5

sqlite3CSVを介したデータのインポート/エクスポートは、 gem自体を介して行われるものではないと思います。ActiveRecordCSVライブラリを介してRubyオブジェクトにデータを出し入れします。その後、、または使用しているORMを介してデータをDBに読み書きするだけです。

FasterCSVはRubyでそれを行う必要があります。Rails 3.2も使用している場合、FasterCSVは、RailsのCSVlibの舞台裏でのデフォルトの実装であると私は信じています。

于 2012-08-08T16:43:36.283 に答える
1

あなたはrubyからsqlite3バイナリを呼び出すことができます:

%x(
sqlite3 "#{pathToDatabase}" << EOF
.mode csv
.separator ',' "\\\\n"
.import "#{pathToCsvFile}" "#{csvTableName}"
EOF
)
于 2019-07-03T14:02:00.893 に答える