小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

PerlからDBへバイナリデータを格納する

バイナリデータをDBに格納するには、たぶん、いろいろあって、すんなり出来ないと思います。
とりあえず、私が苦労した結果をメモしときます。


以下は、OLEモジュールADO(Win32::OLE->new("ADODB.Connection"))の場合です。
 

バイナリデータを16進文字列に変換し、頭に「0x」を付けてスカラー変数に代入、その変数を使ってDB格納ができました。


具体的には、$wkにバイナリデータが入っているとします。(Perlでの文字列は、バイナリデータを格納することができる)
それを以下のように、$wkをunpackで16進文字列に変換し、"0x"の後に連結する。

$strhex = "0x" .  unpack("H*", $wk);

つぎに、$strhexを引用符なしでSQLにセットしてやると、バイナリデータを格納することができました。

"UPDATE xxxTBL SET binDATA = $strhex WHERE ......"