sql - 将查询结果作为 CSV 文件从 Docker PostgreSQL 容器导出到本地机器
问题描述
我不确定这是否可能,因为我对 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 -u database_user_name container_name \
psql -d database_name -c "COPY (SELECT * FROM table) TO STDOUT CSV" > output.csv
-c
告诉 psql 你在建立连接时执行给定的 SQL 语句。
所以你的命令应该是这样的:
docker exec -it -u postgres pgdocker \
psql -d yourdb -c "COPY (SELECT * FROM test) TO STDOUT CSV" > test_1.csv
推荐阅读
- javascript - 如果使用 PHP 邮件程序发送邮件,如何检查 Ajax 和 JavaScript
- django - 在 django 中使用信号,尝试生成用于 SMS 验证的代码,但生成的代码在管理员中不可见。我错过了什么?
- javascript - JavaScript - 未捕获的类型错误:无法读取未定义的属性(读取“样式”)
- ios - 无法在 xib 文件 Swift IOS 中正确设置 IBOutlet
- powershell - 输入对象也不能绑定到命令的任何参数,因为命令不接受管道输入
- django - Vagrant Provision 致命的:TASK [Start yarn]
- flutter - Flutter:通过类构造函数传递一个函数参数
- python - 如何使用 USART 发送超过 1 个元素?
- javascript - 如何使用事件侦听器在函数中返回值?
- c# - 用户选择数据库文件后,如何以编程方式更改连接字符串?