Como su archivo reside en su máquina local y desea importar el blob a un servidor remoto, tiene dos opciones:
1) Transfiera el archivo al servidor y use la función del lado del servidor :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2) Use el psql meta- comando como lo tienes.
Pero no puede mezclar metacomandos psql con comandos SQL, eso es imposible.
Use la variable psql :LASTOID
en un UPDATE
comando que ejecuta inmediatamente después de \lo_import
comando meta en la misma sesión de psql:
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
Para escribir eso (funciona en Linux, no estoy familiarizado con las secuencias de comandos de shell de 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
\\
es el metacomando separador. Necesitas duplicar el\
, en un""
cadena, porque el shell interpreta una capa.\
antes de la nueva línea es solo la continuación de la línea en los shells de Linux.
Sintaxis alternativa (probada nuevamente en 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