Da din fil ligger på din lokale maskine, og du vil importere klatten til en ekstern server, har du to muligheder:
1) Overfør filen til serveren og brug server-side-funktionen :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2) Brug psql meta- kommando som du har det.
Men du kan ikke blande psql-metakommandoer med SQL-kommandoer, det er umuligt.
Brug psql-variablen :LASTOID
i en UPDATE
kommando, som du starter umiddelbart efter \lo_import
meta-kommando i samme psql-session:
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
For at scripte det (fungerer i Linux, jeg er ikke bekendt med 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
\\
er separator-metakommandoen. Du skal fordoble\
, i en""
streng, fordi skallen fortolker ét lag.\
før den nye linje er blot linjefortsættelsen i Linux-skaller.
Alternativ syntaks (testet 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