首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从docker中导出表postgres到macos本地

问如何从docker中导出表postgres到macos本地
EN

Stack Overflow用户
提问于 2021-05-11 14:49:38
回答 1查看 187关注 0票数 0

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

在数据库postgres上,我访问docker容器并运行命令

代码语言:javascript
复制
\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时,使用以下命令:

代码语言:javascript
复制
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它导入成功,但命令行不成功。

EN

回答 1

Stack Overflow用户

发布于 2021-05-11 16:03:21

您的postgres在Docker Container中。这是一台与您的mac不同的计算机,它是主机。因此,Docker Container不知道/Users/maclocaluser文件夹。

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

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

作为示例,请参阅下面的docker-compose.yml。

代码语言:javascript
复制
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命令将如下所示:

代码语言:javascript
复制
\copy users TO  '/var/transfer/abc.csv' WITH CSV HEADER DELIMITER ';'

如果你在Postgres上执行这个命令,你的abc.csv文件应该会在你的macbook上以./transfer结束。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67481818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档