大佬教程收集整理的这篇文章主要介绍了postgresql – 在Amazon RDS Postgres上编写PostGIS设置脚本,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
create extension Postgis; create extension fuzzystrmatch; create extension Postgis_tiger_geocoder; create extension Postgis_topology; create functION exec(text) returns text language plpgsql volatile AS $f$BEGIN EXECUTE $1; RETURN $1; END; $f$; SELECT exec('alter table ' || quote_ident(s.nspName) || '.' || quote_ident(s.relname) || ' owneR TO rds_superuser') FROM ( SELECT nspname,relname FROM pg_class c JOIN pg_namespace n ON (c.relnamespace = n.oid) WHERE nspname in ('tiger','topology') AND relkind IN ('r','S','v') ORDER BY relkind = 'S') s; alter scheR_803_11845@a tiger owner to rds_superuser; alter scheR_803_11845@a topology owner to rds_superuser;
当我使用psql客户端登录服务器并单独运行每个命令时,一切都很好.
测试结果:
dbname=> SELEct na.address,na.streetname,na.streettypeabbrev,na.zip from normalize_address('1 Devonshire Place,Boston,MA 02109') as na; address | streetname | streettypeabbrev | zip ---------+------------+------------------+------- 1 | Devonshire | Pl | 02109 (1 row)
当我将所有这些命令放入.sql文件然后尝试通过psql命令一次运行它们时…
PGpassworD='****' psql -h us-West-2-stg-db-1.***.rds.amazonaws.com -U dbuser -d dbname -f setup_Postgis.sql -o setup_Postgis.log
…尝试测试PostgIS功能时出现以下错误:
dbname=> SELEct na.address,MA 02109') as na; ERROR: function normalize_address(unknown) does not exist LINE 2: from normalize_address('1 Devonshire Place,MA 02109... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.
知道为什么在服务器上直接运行命令时这个命令的确切顺序有效,但是当通过命令行作为.sql文件运行时却没有?
注意:我确定我用来运行命令的db用户是rds_superuser角色
从服务器内部运行install命令时,会自动为正在运行的客户端会话设置search_path以包含tiger扩展.因此,当您在安装扩展程序后立即运行test命令时,它位于search_path中,并且测试命令可以正常工作.
但是,当您断开会话,然后重新连接时,它不再在search_path中.由于作为远程脚本运行命令会在脚本完成后立即结束会话,因此存在同样的问题.下次连接时,tiger不再位于search_path中,并且test命令不起作用.
因此,为了使此测试在安装后脚本中运行,您必须手动将tiger添加到搜索路径:SET search_path = public,tiger;
然后运行命令,一切都很好.
如果您的应用程序在查询中需要老虎函数,您将需要通过更改数据库配置的search_path将老虎锁定到您的搜索路径中,如此listserv响应中所述:
http://lists.osgeo.org/pipermail//postgis-users/2012-November/035701.html
或者,每次与DB建立连接时都必须进行设置.
以上是大佬教程为你收集整理的postgresql – 在Amazon RDS Postgres上编写PostGIS设置脚本全部内容,希望文章能够帮你解决postgresql – 在Amazon RDS Postgres上编写PostGIS设置脚本所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。