ich arbeite an einer Anwendung, die ich delphi 7
als Front-End und postgres 9.0
als Back-End verwende.
Ich muss Bilder auf den Server hochladen, also verwende ich \lo_import
und \lo_export
zum Einfügen von Bildern auf den Server und zum Abrufen der Bilder vom Server.
ich bin auf ein Problem gestoßen, bei dem das LASTOID
nach einem benötigt wird \lo_import
, damit ich die OID zum Aktualisieren einer Zeile in meiner Tabelle verwenden kann, aber ich kann die Syntax in Windows nicht richtig einstellen
hier meine Frage zustackoverflow.com.. ich habe die Antwort, aber das Skript ist im Linux-Sheel-Befehl .. ich kann es nicht in Windows ausführen
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
Und
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
ich habe dies jedoch in Windows versucht
"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -h 192.168.1.12 -p 5432 -d myDB -U my_admin -c "\lo_import 'C://im/zzz4.jpg'";
dann mache ich sofort (programmgesteuert)
"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -h 192.168.1.12 -p 5432 -d nansis -U nansis_admin -c " update species SET speciesimages = :LASTOID WHERE species='ACAAC24'"
Aber ich bekommeSyntax error at or near ":"
kann mir jemand sagen, wie ich es in einen Windows-Befehl umwandeln kann?
Antwort1
Ich habe diese Antwort auf meine Frage auf Stackoverflow erhaltenKonvertierung von Linux-Befehlen in Windows-Befehle von Postgres 9-0
Fügen Sie die Befehle einfach in eine Datei ein (z. B. import.psql).
-- contents of import.psql
\lo_import '/path/to/my/file/zzz4.jpg'
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
Geben Sie dann den Befehl ein
"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -h 192.168.1.12 -p 5432 -d myDB -U my_admin -f import.psql