postgresql - 无法使用 GDAL ogr2ogr 远程连接到 postgres

标签 postgresql docker remote-access gdal shapefile

我正在尝试通过 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 驱动程序已加载并启用? <- 一点困惑

正在连接的用户具有 super 用户权限,由此处官方 PostgreSQL docker 镜像中的 .sh 脚本创建:https://github.com/docker-library/postgres/tree/master/9.4

据我所知,通过我对谷歌和文档的研究,一切都是正确的,应该可以正常工作..

super 用户权限、数据库连接的正确语法、加载的驱动程序……我缺少什么?几天来我一直在努力完成这项工作,我需要帮助。

最佳答案

连接字符串的语法很重要,尤其是在使用引号时。查看PostgreSQL driver有关这应该是什么样子的示例。例如,尝试:

$ ogrinfo PG:"host=172.17.2.176 port=5432 user='user' password='password' dbname='dbname'"

一些有用的提示:

  • 如果你经常连接到这个数据库,你可以use environment variables指定主机、端口、数据库名称和/或用户名。
  • A password file可用于避免在键入命令或在脚本中泄露您的密码。

关于postgresql - 无法使用 GDAL ogr2ogr 远程连接到 postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27986769/

相关文章:

c - PostgreSQL:我的 C (libpq) 程序如何检测哪个表约束触发了错误?

docker - 如何在 Dockerfile 中自定义 yum .repo 文件,以便在安装软件包时将其用作源?

docker - 将 docker 运行时参数添加到 helm 图表

mysql - 连接到 Docker 容器中的 MySQL(Windows/VirtualBox 上的 Vagrant)

linux - Linux 中的延迟内核 panic

python - 在Python的For循环中添加SQL查询

sql - 如何只更新 PostgreSQL 9.4 中另一个表的更改值?

ruby-on-rails - 工头无法连接到 postgresql 服务器 (Rails)

powershell - 使用通用参数在本地或远程执行Powershell脚本

java - 在 2 节点 wildfly 集群中调用远程 ejb