我试图通过Gdal ogr2ogr将shapefile插入PostgreSQL,命令如下:
ogr2ogr -f 'PostgreSQL' PG:dbname='dbname',user='user',host='172.17.2.176',password='password',port='5432' shapefile -nln 'cities'
然而,ogr2ogr似乎无法连接到位于单独的docker容器中的PosgreSQL。所有连接参数都是正确的,其他连接成功地使用相同的连接参数并执行到同一个PostgreSQL容器。 Laravel迁移,在对这些表执行命令之前检查数据库和表是否存在的命令行sql,以及使用COPY命令导入csv文件,都使用ogr2ogr命令中使用的相同连接参数成功运行到单独的PostgreSQL docker容器。
我跑的时候:
ogrinfo 'PostgreSQL' PG:dbname='dbname',user='user',host='172.17.2.176',password='password',port='5432'
我收到错误:"无法打开数据源`PostgreSQL'使用以下驱动程序......"
列出的其中一个驱动因素是" - >的PostgreSQL"
这意味着PostgreSQL驱动程序已加载并启用? < - 一点困惑
与之连接的用户具有超级用户权限,由官方PostgreSQL泊坞窗图像中的.sh脚本创建:https://github.com/docker-library/postgres/tree/master/9.4
据我所知,通过我对谷歌和文档的研究发现,一切都是正确的,应该有效..
超级用户权限,数据库连接的正确语法,加载的驱动程序..我缺少什么?我一直试图让这项工作工作几天,我需要帮助。
答案 0 :(得分:6)
连接字符串的语法很重要,特别是使用引号。有关此内容的示例,请参阅PostgreSQL driver。例如,尝试:
$ ogrinfo PG:"host=172.17.2.176 port=5432 user='user' password='password' dbname='dbname'"
此外,如果您经常连接到此数据库,则可以use environment variables提供帮助。