Тъй като вашият файл се намира на вашата локална машина и искате да импортирате blob обекта на отдалечен сървър, имате две възможности:
1) Прехвърлете файла на сървъра и използвайте функцията от страна на сървъра :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2) Използвайте psql meta- команда сякаш го имаш.
Но не можете да смесвате 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
\\
е разделителната мета-команда. Трябва да удвоите\
, в""
низ, защото обвивката интерпретира един слой.\
преди новият ред е просто продължението на реда в обвивките на 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