临时表的问题
Posted
技术标签:
【中文标题】临时表的问题【英文标题】:problem with TEMPORARY TABLE 【发布时间】:2011-03-03 21:08:18 【问题描述】:在 php 中我这样做:
1.) 创建一个临时表:CREATE TEMP TABLE new_table AS SELECT .... FROM ...;
2.) 之后我想使用这个表来创建一个形状文件:shell_exec ("pgsql2shp .... -u username -P password ...);
这两件事单独起作用,但是通过创建一个临时表,然后在 pgsql2shp 中使用该表不起作用。我认为这是因为临时表持续时间到会话结束。但是要创建 shp 文件,我需要使用用户名和密码,这意味着新会话开始并且临时表在我用于形状创建之前被删除。
任何提示如何解决它?
谢谢!
【问题讨论】:
【参考方案1】:是的,临时表在会话结束或事务结束时被删除。一般来说,您不能将它们传递给另一个进程。
创建一个真实的表,通过在其上粘贴一个 id 为其指定一个唯一的名称,并在运行形状创建后删除该表。
如果您无法更改 pgsql2shp 程序,您可以将其包装在脚本中并调用它。但是,您应该能够将表的名称传递给 pgsql2shp 程序。
不能在 pgsql2shp 程序中运行查询吗?
作为替代方案,/tmp 文件夹中不起眼的平面文件也可以很好地工作。
【讨论】:
以上是关于临时表的问题的主要内容,如果未能解决你的问题,请参考以下文章