Estou trabalhando em um aplicativo usando delphi 7
como front-end e postgres 9.0
back-end.
Eu tenho que fazer upload de imagens para o servidor, então eu uso \lo_import
e \lo_export
para inserir imagens no servidor e obter as imagens do servidor.
me deparei com um problema em que é necessário LASTOID
depois de um \lo_import
tempo para poder usar o OID para atualizar uma linha na minha tabela, mas não consigo definir a sintaxe correta no Windows
aqui está minha pergunta sobrestackoverflow.com.. recebi a resposta, mas o script está no comando linux sheel ..não consigo executá-lo no Windows
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
e
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
eu tentei isso no Windows
"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'";
então imediatamente (programaticamente) estou fazendo
"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'"
Mas eu entendoSyntax error at or near ":"
Alguém pode me dizer como convertê-lo para o Windows Commnad?
Responder1
Recebi esta resposta da minha pergunta sobre stackoverflowpostgres-9-0-linux-command-to-windows-command-conversion
Basta colocar os comandos em um arquivo (digamos import.psql)
-- contents of import.psql
\lo_import '/path/to/my/file/zzz4.jpg'
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
então emita o comando
"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -h 192.168.1.12 -p 5432 -d myDB -U my_admin -f import.psql