Como seu arquivo reside em sua máquina local e você deseja importar o blob para um servidor remoto, você tem duas opções:
1) Transfira o arquivo para o servidor e use a função do lado do servidor :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2) Use o psql meta- comando como você tem.
Mas você não pode misturar meta comandos do psql com comandos SQL, isso é impossível.
Use a variável psql
:LASTOID
em um UPDATE
comando que você inicia imediatamente após o \lo_import
meta comando na mesma sessão psql:UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
Para fazer um script (funciona no Linux, não estou familiarizado com o script de shell do 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
\\
é o meta-comando separador. Você precisa dobrar o\
, em um""
string, porque o shell interpreta uma camada.\
antes da nova linha é apenas a continuação da linha nos shells do Linux.
Sintaxe alternativa (testado no Linux novamente):
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