Da sich Ihre Datei auf Ihrem lokalen Computer befindet und Sie das Blob auf einen Remote-Server importieren möchten, haben Sie zwei Möglichkeiten:
1) Übertragen Sie die Datei auf den Server und verwenden Sie die serverseitige Funktion :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2) Verwenden Sie das psql-Meta- Befehl wie du es hast.
Aber Sie können psql-Metabefehle nicht mit SQL-Befehlen mischen, das ist unmöglich.
Verwenden Sie die psql-Variable :LASTOID
in einem UPDATE
Befehl, den Sie unmittelbar nach \lo_import
starten meta-Befehl in derselben psql-Sitzung:
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
Um das zu skripten (funktioniert unter Linux, bin ich mit Windows-Shell-Skripting nicht vertraut):
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
\\
ist der Separator-Metabefehl. Sie müssen den\
verdoppeln , in einem""
string, da die Shell eine Ebene interpretiert.\
vor dem Zeilenumbruch ist in Linux-Shells nur die Zeilenfortsetzung.
Alternative Syntax (erneut unter Linux getestet):
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