Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何在docker容器中运行Postgres查询?_Postgresql_Docker - Fatal编程技术网

Postgresql 如何在docker容器中运行Postgres查询?

Postgresql 如何在docker容器中运行Postgres查询?,postgresql,docker,Postgresql,Docker,我正在使用安装了Postgres 9.5的Windows计算机。我还有一个码头集装箱。我需要运行一个专门位于docker容器内的sql文件,它应该在Window的Postgres上运行查询 如何使用docker文件或init.sh文件(从docker文件调用)执行此操作。根据讨论,主要问题是连接超时,我们可以增加连接超时 见正式文件 下面是一个它工作的例子 SET statement_timeout = 10000; SET test=# SELECT pg_sleep(15); ERROR:

我正在使用安装了Postgres 9.5的Windows计算机。我还有一个码头集装箱。我需要运行一个专门位于docker容器内的sql文件,它应该在Window的Postgres上运行查询


如何使用docker文件或init.sh文件(从docker文件调用)执行此操作。

根据讨论,主要问题是连接超时,我们可以增加连接超时

见正式文件

下面是一个它工作的例子

SET statement_timeout = 10000;
SET
test=# SELECT pg_sleep(15);
ERROR:  canceling statement due to statement timeout

有关更多信息,您可以查看以下内容:

如果您可以添加docker文件,那么我认为可以帮助您在docker Container中添加sql文件。我的docker文件不做任何与postgres或查询相关的事情。它确实运行init.sh文件。在init.sh内部有一个python脚本,该脚本本应在postgres中运行查询,但不知何故失败了。python/opt/bag/src/createtables.py-q scripts/createtables.sql由于某种原因,此python脚本在较大的查询中失败。当我在windows的PGadmin应用程序中运行查询时,它确实起作用。这就是为什么我想直接在docker容器中运行psql命令。在docker容器中,是否有包含createtables.sql的脚本文件夹?是的。它一行运行多个脚本,如下所示:python/opt/bag/src/createtables.py-q scripts/createtable1.sql python/opt/bag/src/createtables.py-q scripts/createtable2.sql python/opt/bag/src/createtables.py-q scripts/dosomething.sql大多数情况下,连接在运行一段时间后意外关闭(一行中的每个查询大约需要30分钟)。这个python文件似乎没有太多的耐力。脚本文件存在并且放置正确。您可以将它
exec--It
放入docker容器,并检查是否有作为
scripts
的目录。如果没有,则需要将
scripts
dir复制到容器中。如何在docker文件或.sh fil中设置该变量e?我在dockerfile中尝试过这个:SET statement\u timeout=10;但是它给我一个错误,说SET未找到ENV valueEdit dockerfile只是在容器旋转之前粘贴它,ENV ENV\u var\u name=valueSo你是说ENV statement\u timeout 100000?还是说ENV name是我的docker容器的名称?是的,这就足够了
ENV statement\u timeout100000
但问题是为什么需要设置env变量?只需在容器中运行命令!