Mysql 如何将表postgres从docker导出到macos local

Mysql 如何将表postgres从docker导出到macos local,mysql,postgresql,docker,csv,Mysql,Postgresql,Docker,Csv,我使用docker,然后安装postgres。现在我想从postgres导出一个表并将其插入mysql。我使用命令一步一步的命令如下: 关于数据库postgres 我访问docker容器并运行命令 \copy users TO '/Users/maclocaluser/abc.csv' WITH CSV HEADER DELIMITER ';' 但它有一个例外:/Users/maclocaluser/abc.csv:没有这样的文件或目录 但当我使用工具dbever或pgadmin时,它导出成

我使用docker,然后安装postgres。现在我想从postgres导出一个表并将其插入mysql。我使用命令一步一步的命令如下:

关于数据库postgres 我访问docker容器并运行命令

\copy users TO  '/Users/maclocaluser/abc.csv' WITH CSV HEADER DELIMITER ';'
但它有一个例外:
/Users/maclocaluser/abc.csv:没有这样的文件或目录

但当我使用工具dbever或pgadmin时,它导出成功。不是错误

然后,当我想使用docker导入mysql时,我使用以下命令:

LOAD DATA  LOCAL INFILE '/Users/maclocaluser/abc.csv'  INTO TABLE users  FIELDS TERMINATED BY ','  ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
这与我的情况相同,但有一个例外:

未找到文件'/Users/maclocaluser/abc.csv'(错误代码:2-没有这样的文件或目录)
但它存在于我的口述中


如何在mac上导出和导入它。当我使用ubuntu时,它运行成功。我使用工具mysql或数据库导入成功,但命令行不成功。

您的postgres位于Docker容器中。那是一台与你的mac不同的机器,mac是主机。 因此,Docker容器不知道/Users/maclocaluser文件夹

您应该做的是将docker容器中的目录映射到主机(Macbook)上的文件夹。(参见Docker文档上的卷)

然后将数据从postgres复制到容器上该目录中的CSV。这些卷将确保它最终出现在你的Mac电脑上

例如,请参见下面的docker-compose.yml

版本:“3.9”
服务:
db:
图片:postgres:最新
重新启动:“否”
容器名称:db
卷数:
-/数据库:/var/lib/postgresql/data
-/转移:/var/转移:rw
端口:
- "5432:5432"
环境:
POSTGRES_密码:root
POSTGRES_用户:myrootpassword
POSTGRES_DB:mydatabase
它启动一个数据库并将数据库本身映射到名为./database的主机文件夹。 它还将文件夹./transfer映射到Docker容器上的/var/transfer

您的复制命令将如下所示:

\使用csv标题分隔符将用户复制到'/var/transfer/abc.csv';'

如果您在Postgres上执行此命令,您的abc.csv文件应在macbook上的./transfer中结束。

非常感谢您。但我的文件夹/数据库放在哪里。在/Users/maclocaluser中,对吗?所以我有一个问题:为什么pgadmin和DBE会成功导出它?如果您在docker中也运行pgadmin,那么它就在同一docker网络上。在数据库中,您可能与端口5432建立连接。如果将Docker容器端口5432映射到主机端口5432,则dbever可以在主机上运行时访问该端口上的数据库。您的文件夹/数据库与Docker-compose.yml文件处于同一级别。与./transfer文件夹相同。