ruby,尝试将csv导入内存中数据库的列数错误

ruby,尝试将csv导入内存中数据库的列数错误,ruby,sqlite,csv,sequel,Ruby,Sqlite,Csv,Sequel,我在尝试将数据从文件导入数据库进行测试时遇到问题。在Ruby shell中,以下代码完全符合我的预期: jruby-1.7.4 :001 > require('sequel') => true jruby-1.7.4 :002 > require('csv') => true jruby-1.7.4 :003 > file = CSV.read('./spec/test_data/registration_sessions.csv') => [["01"

我在尝试将数据从文件导入数据库进行测试时遇到问题。在Ruby shell中,以下代码完全符合我的预期:

jruby-1.7.4 :001 > require('sequel')
 => true
jruby-1.7.4 :002 > require('csv')
 => true
jruby-1.7.4 :003 > file = CSV.read('./spec/test_data/registration_sessions.csv')
 => [["01", "EG000000001"], ["02", "EG000000002"], ["03", "EG000000002"]]
jruby-1.7.4 :004 > db = Sequel.connect('jdbc:sqlite::memory:')
 => #<Sequel::JDBC::Database: "jdbc:sqlite::memory:">
jruby-1.7.4 :005 > db.create_table(:registration_sessions) do
jruby-1.7.4 :006 >   Integer :id
jruby-1.7.4 :007?>   String :device_serial
jruby-1.7.4 :008?> end
 => nil
jruby-1.7.4 :009 > db[:registration_sessions]
 => #<Sequel::JDBC::Dataset: "SELECT * FROM `registration_sessions`">
jruby-1.7.4 :010 > db[:registration_sessions].import(db[:registration_sessions].columns, file)
 => ["INSERT INTO `registration_sessions` (`id`, `device_serial`) VALUES ('01', 'EG000000001')", "INSERT INTO `registration_sessions` (`id`, `device_serial`) VALUES ('02', 'EG000000002')", "INSERT INTO `registration_sessions` (`id`, `device_serial`) VALUES ('03', 'EG000000002')"]
jruby-1.7.4 :012 > db[:registration_sessions].all
 => [{:id=>1, :device_serial=>"EG000000001"}, {:id=>2, :device_serial=>"EG000000002"}, {:id=>3, :device_serial=>"EG000000002"}]
当我运行测试时,这将导致以下结果:

  14) RegistrationMetricsQueries #get_registration_metrics should return only durations for sessions that contain the start and end moment
     Failure/Error: seed_test_data(registration_metrics_db[:registration_sessions], session_seed_data)
     Sequel::Error:
       Different number of values and columns given to insert_sql
     # ./spec/services/tablet_usage_queries_spec.rb:88:in `seed_test_data'
     # ./spec/services/registration_metrics_queries_spec.rb:10:in `(root)'

  15) RegistrationMetricsQueries #get_registration_metrics should return durations in seconds for valid registration sessions, which contain the start and end moment
     Failure/Error: seed_test_data(registration_metrics_db[:registration_sessions], session_seed_data)
     Sequel::Error:
       Different number of values and columns given to insert_sql
     # ./spec/services/tablet_usage_queries_spec.rb:88:in `seed_test_data'
     # ./spec/services/registration_metrics_queries_spec.rb:10:in `(root)'
我做错了吗

编辑:哦,还有我的样本数据

01,EG000000001
02,EG000000002
03,EG000000002

事实证明,问题是由于未能插入。有一个表连接发生在后台,它导致Sequel被锁定,因为sqlite不支持正确的连接。我正在迁移测试,以使用实际的mysql数据库,而不是内存中的sqlite db

01,EG000000001
02,EG000000002
03,EG000000002