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 ......"