[英]Bulk Insert Rails SQLite
我一直在努力使散裝插件在Rails設置中工作。 我收到以下錯誤消息。
SQLite3 :: SQLException:在“,”附近:語法錯誤:插入INTO令牌(article_id,count,'origin','created_at','updated_at','token')值(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','Companies'),(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','Watch'),(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','Big Data ')
當我將上述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
提前致謝。
我想您應該在這里使用單引號:
raw_sql = "..... VALUES #{vec.join(', ')}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.