我最近尝试在容器化的Postgres数据库中使用以下命令将数据库内容复制到csv文件中:
\copy ${TABLE} TO ${FILE} DELIMITER ',' CSV HEADER;
我收到一个响应,指示文件已成功复制,但是找不到文件复制到的位置。当我尝试指定其他路径来输出文件时,我得到响应directory/file.csv: No such file or directory
有人知道容器化数据库的输出文件在哪里以及如何将它们定向到可访问的位置吗? 我在Mac OS上,这是启动数据库的docker-compose文件中的一些相关信息。
db:
image: kartoza/postgis:12.0
volumes:
- postgis:/var/lib/postgresql
最佳答案
Docker容器在内部将其信息存储在所谓的Docker卷中。您可以在Use volumes中阅读有关此内容的更多文献。
关于您的特定问题,您有一些选择:
\copy ${TABLE} TO /tmp/file.csv DELIMITER ',' CSV HEADER;
然后运行docker ps
,找到您的容器ID并运行:docker cp container_id:/tmp/file.csv file.csv
然后,您将在当前文件夹中包含file.csv
及其数据。\copy ${TABLE} TO STDOUT DELIMITER ',' CSV HEADER;
这将通过终端转储所有数据。仅当没有足够的寄存器不能通过回滚时才使用它。psql
从本地计算机连接...,然后运行copy命令将转储到本地计算机。 (或使用pgAdmin或DataGrip等第三方工具来转储信息)。 关于postgresql - 容器化数据库文件路径和根目录未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64342359/