在PHP中我做:
1。)创建临时表:CREATE TEMP TABLE new_table AS SELECT .... FROM ...;
2。)我想用这个表来创建一个形状文件:shell_exec(“pgsql2shp .... -u username -P password ...);
Separetly这两件事情有效,但是通过创建一个临时表,之后在pgsql2shp中使用这个表是行不通的。我认为这是因为临时表持续时间是到会话结束。但是要创建shp文件,我需要使用用户名和密码,这意味着新的会话启动,临时表在我用它来创建形状之前就已经删除了。
任何提示如何解决?
谢谢!
答案 0 :(得分:3)
是的,临时表在会话结束时删除,或者可选地在事务结束时删除。通常,您无法将它们传递给另一个进程。
创建一个真实的表,通过在其中添加id并在运行形状创建后删除表来为其指定一个唯一的名称。
如果无法更改pgsql2shp程序,可以将其包装在脚本中并调用它。但是,您应该能够将表的名称传递给pgsql2shp程序。
你不能在pgsql2shp程序中运行查询吗?
作为替代方案,/ tmp文件夹中的简单平面文件也可以很好地工作。