我正在尝试转换一些JSON数据并使用Ruby将其插入到sqlite3数据库中。 JSON来自githubarchive.com我遵循了关于这个问题的建议:Escaping Strings For Ruby SQLite Insert我的代码如下:
Yajl::Parser.parse(open(input).read) do |event|
r = CSV::Row.new(headers, [])
flatmap({}, event).each do |k,v|
v = (Time.parse(v).utc.strftime('%Y-%m-%d %T') rescue '') if k =~ /_at$/
if r.include? k
r[k] = v
else
puts "Unknown field: #{k}, value: #{v}"
end
end
# tmp << r.to_s
db = SQLite3::Database.open( "../github.sqlite" )
val = (['?'] * 186).join(',')
ins = db.prepare("insert into Sheet1_copy values (#{val})")
ins.execute(r.to_s)
这部分取自他们的git项目。现在,当我尝试使用任何数据运行时,我得到了
gems/sqlite3-1.3.5/lib/sqlite3/statement.rb:67:in `step': constraint failed (SQLite3::ConstraintException)
有什么想法? 谢谢!
答案 0 :(得分:0)
您需要更多的东西来正确加载它。这是一个工作副本:https://gist.github.com/2426614
请注意,我没有使用预备语句,因为这需要更多的体操来填充所有不同类型事件的空行。话虽如此,它的运行速度非常快。