我正在尝试转换一些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)有什么想法吗?谢谢!
发布于 2012-04-20 14:36:33
您还需要准备一些东西才能正确加载它。这里有一个可用的副本:https://gist.github.com/2426614
请注意,我没有使用预准备语句,因为在所有不同类型的事件中填充空行需要更多的操作。话虽如此,它的运行速度还是相当快的。
https://stackoverflow.com/questions/10235324
复制相似问题