![](/img/trans.png)
[英]Exporting csv file from postgresql database server to local machine
[英]Export Query Result as CSV file from Docker PostgreSQL container to local machine
如果我做错了什么,我不确定这是否可行,因为我对 Docker 还是很陌生。 基本上,我想将 PostgreSQL docker 容器内的查询结果作为 csv 文件导出到我的本地机器。
这是我到目前为止的地方。 首先,我使用以下命令运行我的 PostgreSQL docker 容器:
sudo docker run --rm --name pg-docker -e POSTGRES_PASSWORD=something -d -p 5432:5432 -v $HOME/docker/volumes/postgres:/var/lib/postgresql/data postgres
然后我使用 docker exec 访问 docker 容器以运行 PostgreSQL 命令,该命令会将查询结果复制到具有指定位置的 csv 文件,如下所示:
\copy (select id,value from test) to 'test_1.csv' with csv;
我认为应该将查询结果导出为本地机器中名为 test_1.csv 的 csv 文件,但我在本地机器的任何地方都找不到该文件,还检查了这两个目录: $HOME/docker/volumes/postgres
; /var/lib/postgresql/data postgres
您可以将数据导出到STDOUT
并将结果通过管道传输到客户端计算机中的文件:
$ docker exec -it pgdocker psql "COPY (SELECT * FROM test) TO STDOUT CSV" > test_1.csv
/var/lib/postgresql/data
目录是数据库服务器存储其数据文件的地方。 它不是用户需要直接操作或找不到任何有趣内容的目录。
像test_1.csv
这样的路径是相对于工作目录的。 当您使用docker exec
进入 postgres 容器时,默认目录是/
所以这就是您的文件所在的位置。 您还可以在运行psql
之前使用cd
切换到另一个目录:
root@b9e5a0572207:/some/other/path# cd /some/other/path/
root@b9e5a0572207:/some/other/path# psql -U postgres
...或者您可以提供绝对路径:
\copy (select id,value from test) to '/some/other/path/test_1.csv' with csv;
您可以使用docker cp
将文件从容器传输到主机:
docker cp pg-docker:/some/other/path/test_1.csv /tmp
...或者如果这是您经常做的事情,您可以创建一个卷。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.