簡體   English   中英

批量插入Rails SQLite

[英]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中如何使用此字符串應該有一個問題。

我有以下設置。

  • Ruby 2.0
  • 導軌3.2.13
  • sqlite3 1.3.7
  • Ubuntu 12.04

這是執行批量上傳的方法。 它需要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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM