我一直在努力让批量插入在我的Rails设置中工作。我收到以下错误消息。
SQLite3 :: SQLException:near“,”:语法错误: INSERT INTO令牌(article_id,count,'origin','created_at','updated_at','token')VALUES(42 ,1,'Title','2013-06-24 11:54:31 +0400','2013-06-24 11:54:31 +0400','5'),(42,1,'Title' ,'2013-06-24 11:54:31 +0400','2013-06-24 11:54:31 +0400','公司'),(42,1,'Title','2013-06- 24 11:54:31 +0400','2013-06-24 11:54:31 +0400','To'),(42,1,'Title','2013-06-24 11:54:31 +0400','2013-06-24 11:54:31 +0400','观看'),(42,1,'Title','2013-06-24 11:54:31 +0400','2013 -06-24 11:54:31 +0400','In'),(42,1,'Title','2013-06-24 11:54:31 +0400','2013-06-24 11: 54:31 +0400','大数据')
当我将上述SQL字符串粘贴到Firefox的 SQLite插件并执行查询时,它可以正常工作。所以我认为在Rails中如何使用这个字符串应该存在问题。
我有以下设置。
以下是批量上传的方法。它需要2个参数。 1包含字符串标记和每个标记的数字计数的哈希。第二个参数只是一个字符串。
在Article类的实例上调用该方法。所以self.id只是文章ID。
我还尝试通过 activerecord-import gem进行批量上传,但也出现了类似的语法错误消息。
def token_list(names,originvar)
vec =[]
names.each do |i, count|
time = Time.now
vec << "(#{self.id},#{count},'#{originvar}','#{time}','#{time}','#{i}')"
end
raw_sql = "INSERT INTO tokens (article_id,count,'origin','created_at','updated_at','token') VALUES #{vec.join(", ")}"
Token.connection.execute(raw_sql)
end
提前致谢。
答案 0 :(得分:0)
我猜你应该在这里使用单引号:
raw_sql = "..... VALUES #{vec.join(', ')}"