Eftersom din fil finns på din lokala dator och du vill importera klumpen till en fjärrserver, har du två alternativ:
1) Överför filen till servern och använd serversidans funktion :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2) Använd psql-meta- kommando som du har det.
Men du kan inte blanda psql-metakommandon med SQL-kommandon, det är omöjligt.
Använd psql-variabeln :LASTOID
i en UPDATE
kommandot som du startar omedelbart efter \lo_import
metakommando i samma psql-session:
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
För att skripta som (fungerar i Linux, jag är inte bekant med Windows-skalskript):
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
\\
är separatormetakommandot. Du måste dubbla\
, i en""
sträng, eftersom skalet tolkar ett lager.\
innan den nya raden är bara radens fortsättning i Linux-skal.
Alternativ syntax (testad på Linux igen):
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