Comme votre fichier réside sur votre machine locale et que vous souhaitez importer le blob sur un serveur distant, vous avez deux options :
1) Transférez le fichier sur le serveur et utilisez la fonction côté serveur :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2) Utilisez la psql meta- commande comme vous l'avez.
Mais vous ne pouvez pas mélanger les méta-commandes psql avec les commandes SQL, c'est impossible.
Utilisez la variable psql :LASTOID
dans une UPDATE
commande que vous lancez immédiatement après le \lo_import
commande meta dans la même session psql :
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
Pour scripter cela (fonctionne sous Linux, je ne suis pas familier avec les scripts shell 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
\\
est la méta-commande séparateur. Vous devez doubler le\
, dans un""
chaîne, car le shell interprète une couche.\
avant la nouvelle ligne est juste la continuation de la ligne dans les shells Linux.
Syntaxe alternative (testée à nouveau sous 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