ファイルがローカルマシンにあり、BLOBをリモートサーバーにインポートする場合は、次の2つのオプションがあります。
1)ファイルをサーバーに転送し、サーバー側関数を使用します :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2)psqlメタを使用します-コマンド あなたがそれを持っているように。
ただし、psqlメタコマンドとSQLコマンドを混在させることはできません。それは不可能です。
psql変数:LASTOID
を使用してください。 UPDATE
で \lo_import
の直後に起動するコマンド 同じpsqlセッションのメタコマンド:
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
それをスクリプト化するには(Linuxで動作しますが、私はWindowsシェルスクリプトに精通していません):
echo "\lo_import '/path/to/my/file/zzz4.jpg' \\\\ UPDATE species SET speciesimages = :LASTOID WHERE species = 'ACAAC04';" | \
psql -h 192.168.1.12 -p 5432 -d myDB -U my_admin
-
\\
セパレータメタコマンドです。\
を2倍にする必要があります 、""
で 文字列。シェルが1つのレイヤーを解釈するためです。 -
\
改行の前は、Linuxシェルの行の継続です。
代替構文(Linuxで再度テスト済み):
psql -h 192.168.1.12 -p 5432 -d myDB -U my_admin << EOF
\lo_import '/path/to/my/file/zzz4.jpg'
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
EOF