Ponieważ plik znajduje się na komputerze lokalnym i chcesz zaimportować obiekt blob na serwer zdalny, masz dwie opcje:
1) Przenieś plik na serwer i użyj funkcji po stronie serwera :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2) Użyj meta- polecenie tak jak ty.
Ale nie możesz mieszać meta poleceń psql z poleceniami SQL, to jest niemożliwe.
Użyj zmiennej psql :LASTOID
w UPDATE
polecenie, które uruchamiasz natychmiast po \lo_import
meta polecenie w tej samej sesji psql:
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
Do tego skryptu (działa w Linuksie, nie jestem zaznajomiony ze skryptami powłoki 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
\\
jest metapoleceniem separatora. Musisz podwoić\
, w""
string, ponieważ powłoka interpretuje jedną warstwę.\
przed nową linią jest tylko kontynuacją linii w powłokach Linuksa.
Alternatywna składnia (przetestowana ponownie w systemie 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