トップ «前の日記(2009-09-17) 最新 次の日記(2009-09-19)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2009-09-18

_ Ruby-OCI8でBlobのupdate

ちょっとはまったのでメモ。
重要なのは、どうやらBLOB#rewindとBLOB#sizeだと思う(最初、ずーっと書き込みできずに、最後にこの2つを設定したら書けたのだが、力尽きてどちらがトリガーとなったのかは分離していない)。
require 'ruby-oci8'
c = OCI8.new("scott", "tiger", "//server/dbname") # portは1521ならOKだったが指定したらORA例外となった
c.exec('select id, blob from table for update order by id') do |id, blob|
  b = blob.read
  b.gsub('a', 'b')
  blob.rewind  # これは重要っぽい
  blob.write(b)
  blob.size = b.size # これも重要っぽい
end
c.commit
c.logoff

以上で、table内のblobカラムの'a'は'b'に変わる。

とBlobの扱いで時間を取られたが、やはり圧倒的に楽。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|

ジェズイットを見習え