如何使用 DB2/Rails 将大型 CSV 文件插入 CLOB 列

How to insert large CSV into a CLOB column with DB2/Rails

问题:我有一个很大的 CSV,我想用 Rails

插入 DB2 table

说明:CSV 文件大约有 2k lines/8K 个字符。 CLOB 列设置为处理超过 10K 个字符。我可以通过 RubyMine 数据库控制台很好地插入 CSV。但是我的应用程序崩溃了。

ActiveRecord 产生一个巨大的插入查询。代码:

Logger.create(csv: csv_data.to_s)

DB2 returns 一个错误:

 ActiveRecord::JDBCError: [SQL0102] String constant beginning with 'foobar' too long.

我可以使用类似的代码将巨大的 PDF 文件插入到 BLOB 列中。我试着先创建记录,然后用数据更新它,没有区别。

这个问题和一样。除了我需要一个 Rails 解决方案,而不是一般的

通过将 csv_data 分成块并将它们附加到列

找到了解决此问题的方法
update_attribute(:csv, '') if self.csv.nil? # Can't CONCAT to nil

# Split csv_data into chunks, concatenate each one to the field
csv_data.scan(/.{1,6144}/m).each do |part|
  parm =  ActiveRecord::Base.connection.quote(part)
  ActiveRecord::Base.connection.execute("update #{Logger.table_name} set csv = CONCAT(csv, #{parm}) where id = #{self.id}")
end