カスタム関数を必要としないもう1つの方法は、loread(lo_open(...))
を使用することです。 次のような組み合わせ:
UPDATE user SET pkcs_as_bytea = loread(lo_open(pkcs12_as_oid, 262144), 1000000) WHERE thistable.pkcs12 IS NOT NULL
このコード、loread
に問題があります 関数は、2番目のパラメーターとして読み取る最大バイト数(1000000
)を必要とします。 上記で使用したパラメータ)なので、データが大きい場合は、ここで非常に大きな数値を使用する必要があります。そうしないと、この数バイト後にコンテンツがトリミングされ、すべてのデータがbytea
に戻されません。 フィールド。
OIDからテキストフィールドに変換する場合は、次のような変換関数も使用する必要があります。
UPDATE user SET pkcs_as_text = convert_from(loread(lo_open(pkcs12_as_oid, 262144), 1000000), 'UTF8')
(262144
はオープンモードのフラグ、40000
ヘキサで、「オープン読み取り専用」を意味します)