我使用docker,然后安装postgres。现在我想从postgres中导出一个表,并将其插入到mysql中。我使用命令一步一步命令如下:
在数据库postgres上,我访问docker容器并运行命令
\copy users TO '/Users/maclocaluser/abc.csv' WITH CSV HEADER DELIMITER ';'但它给了我一个例外:/Users/maclocaluser/abc.csv: No such file or directory
但当我使用工具dbever或pgadmin时,它导出成功。不是错误。
然后,当我想要使用docker I导入到mysql时,使用以下命令:
LOAD DATA LOCAL INFILE '/Users/maclocaluser/abc.csv' INTO TABLE users FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;这也是我的例外:
File '/Users/maclocaluser/abc.csv' not found (Errcode: 2 - No such file or directory),但它存在于我的字典中。
如何在mac上导出和导入它。当我使用ubuntu时,它运行成功。我使用工具mysql或dbever它导入成功,但命令行不成功。
发布于 2021-05-11 16:03:21
您的postgres在Docker Container中。这是一台与您的mac不同的计算机,它是主机。因此,Docker Container不知道/Users/maclocaluser文件夹。
您应该做的是将docker容器中的一个目录映射到主机(您的Macbook)上的一个文件夹。(请参阅Docker文档中的卷)
然后将数据从postgres复制到容器上该目录中的CSV。音量将确保它最终出现在你的Mac上。
作为示例,请参阅下面的docker-compose.yml。
version: '3.9'
services:
db:
image: postgres:latest
restart: "no"
container_name: db
volumes:
- ./database:/var/lib/postgresql/data
- ./transfer:/var/transfer:rw
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: root
POSTGRES_USER: myrootpassword
POSTGRES_DB: mydatabase它将启动一个数据库,并将数据库本身映射到名为./database的主机文件夹。它还将文件夹./transfer映射到Docker Container上的/var/transfer。
您的Copy命令将如下所示:
\copy users TO '/var/transfer/abc.csv' WITH CSV HEADER DELIMITER ';'如果你在Postgres上执行这个命令,你的abc.csv文件应该会在你的macbook上以./transfer结束。
https://stackoverflow.com/questions/67481818
复制相似问题