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

时间:2017-08-03 19:43:53

标签: ruby-on-rails db2 clob

问题:我想要使用Rails

插入到DB2表中的大型CSV

描述:CSV大约是2k行/ 8K字符。 CLOB列设置为处理超过10K个字符。我可以通过RubyMine数据库控制台插入CSV。但是我的应用程序崩溃了。

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

Logger.create(csv: csv_data.to_s)

DB2返回错误:

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

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

此问题与this相同。除了我需要一个Rails解决方案,而不是一般的

1 个答案:

答案 0 :(得分:0)

通过将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 分成块并将它们附加到列

,找到了解决此问题的方法
   <div class="logo">
          <img src="http://dragonkimfoundation.org/wp-content/uploads/2016/09/Dragon-Logo.png" class="center">
    </div>

    <div class="form"> 
          .... 
    </div>


    img.center {
      float: left;
      height: 150px;
      width: 520px;
      box-shadow: rgba(0,0,0,0.14902) 0px 1px 1px 0px,rgba(0,0,0,0.09804) 0px 1px 2px 0px;
      opacity: 0.7;
    }

body {
    font-family: Helvetica;
    background: url("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTFyEmWRW1cjDqI_rQ4aqZ8eFOB3Sq2z7NUNnUkm7YMJxpLv7WO");
    background-size:cover;
    background-color:orange;

 }