Aangezien uw bestand zich op uw lokale computer bevindt en u de blob naar een externe server wilt importeren, heeft u twee opties:
1) Breng het bestand over naar de server en gebruik de server-side functie :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2) Gebruik de psql-meta- commando alsof je het hebt.
Maar je kunt psql-metacommando's niet combineren met SQL-commando's, dat is onmogelijk.
Gebruik de psql-variabele :LASTOID
in een UPDATE
commando dat u onmiddellijk start na de \lo_import
meta-opdracht in dezelfde psql-sessie:
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
Om dat te scripten (werkt in Linux, ik ben niet bekend met Windows shell-scripting):
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
\\
is het scheidingsteken meta-commando. U moet de\
. verdubbelen , in een""
string, omdat de shell één laag interpreteert.\
voor de nieuwe regel is gewoon de voortzetting van de regel in Linux-shells.
Alternatieve syntaxis (opnieuw getest op 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