Postgres 9.0 linux命令转换为windows命令

时间:2012-03-21 04:53:26

标签: windows linux cmd postgresql

我正在处理使用delphi 7作为前端而postgres 9.0作为后端的应用程序。

我必须将图像上传到服务器,因此我使用\lo_import\lo_export在服务器上插入图像并从服务器获取图像。

我遇到了LASTOID之后需要\lo_import的问题所以我可以使用OID来更新表格中的行但是我无法在Windows中设置正确的语法

UPDATE fishes
SET    fishesimages=17755;  -- <--last OID
WHERE  fishes='0A';

以下是关于stackoverflow.com的问题。我得到了答案,但脚本是一个Linux shell脚本。我无法在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    fishesimages = :LASTOID
    WHERE  fishes = '04';
EOF

echo "\lo_import '/path/to/my/file/zzz4.jpg' \\\\ UPDATE species SET fishesimages =   :LASTOID WHERE  fishes = '04';" | \
 psql -h 192.168.1.12 -p 5432 -d myDB -U my_admin

我在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'"; 

然后立即(以编程方式)我正在做

"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -h 192.168.1.12 -p 5432 -d myDB-U myDB_admin -c " update species SET fishesimages = :LASTOID WHERE fishes='24'" 

但我得到Syntax error at or near ":"

任何人都可以告诉我如何将其转换为Windows commnad吗?

1 个答案:

答案 0 :(得分:2)

将命令放在一个文件中(比如import.psql)

-- contents of import.psql
\lo_import '/path/to/my/file/zzz4.jpg'
UPDATE species
SET    speciesimages = :LASTOID
WHERE  species = 'ACAAC04';

比发出命令

"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -h 192.168.1.12 -p 5432 -d myDB -U my_admin -f import.psql