通过psql将表从本地容器复制到Docker容器

时间:2019-12-12 12:33:34

标签: postgresql docker psql

免责声明:不是在谈论this

当我进入实时Docker容器中时,如何从\copy执行psql命令?

当我尝试\copy table from '/home/Snow/Documents/table.csv' with delimiter as ',' csv header;时 我收到错误消息:

  

没有这样的文件或目录

我应该写另外一条路吗?

2 个答案:

答案 0 :(得分:1)

您可以从容器外部使用psql通过以下命令导入文件:

$ cat table.csv | psql -h docker_container -d db -c \
"COPY table FROM STDIN WITH DELIMITER ',' CSV"
  • 用容器的IP或主机名替换docker_container
  • 如果您的postgres未配置为接受外部连接,请在postgres.conf文件中进行更改:例如listen_addresses = '*'收听所有外部连接。

答案 1 :(得分:1)

您将不得不将文件复制到Docker容器中或安装目录。

要复制文件,请遵循链接到的问题中的过程,例如:

docker cp /home/Snow/Documents/table.csv your_container:/

然后,您可以从容器中导入访问文件:

\copy table from '/table.csv' with delimiter as ',' csv header;

或者,当您创建容器时,可以使用-v选项添加一个卷,例如:

docker run -v /home/Snow/Documents:/data postgres

,然后您的Documents目录位于/ data,允许您像这样导入:

\copy table from '/data/table.csv' with delimiter as ',' csv header;