首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用填充postgres表?

如何使用填充postgres表?
EN

Stack Overflow用户
提问于 2022-06-19 03:14:52
回答 1查看 287关注 0票数 0

在运行docker-compose up -d时,我试图用csv文件中的数据填充postgres表,但是,我尝试过的所有方法最后都说找不到该文件。

我尝试的方法之一是使用golang-migrate和迁移来创建表工作,但是当试图运行COPY customers FROM 'customers.csv' CSV HEADER;时会出现以下错误:

代码语言:javascript
复制
error: migration failed: could not open file "customers.csv" for reading: No such file or directory

我的迁移步骤如下所示:

代码语言:javascript
复制
  migrations:
    image: migrate/migrate
    command: -database postgres://postgres:password@database:5432/database?sslmode=disable -path /migrations up
    volumes:
      - ./migrations:/migrations

customers.csv文件与迁移sql文件一起位于我的migrations目录中,以创建和删除表(这两个表都工作得很好)以及第三个带有COPY查询的迁移sql文件。我的印象是,通过将卷设置为./migrations:/migrations,它会将项目中的./migrations目录中的所有文件映射到容器中的/migrations,所以我真的不明白它怎么找不到这个文件。

我还需要做些什么才能把我的csv文件送到我的码头容器,还是有更好的方法来做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2022-08-04 15:26:26

迁移文件本身似乎是通过-path /migrations标志正确找到的,但这不会改变工作目录。COPY customers FROM 'customers.csv' CSV HEADER;命令将尝试从工作目录读取customers.csv,因为它不是绝对路径。

您可以将命令更改为COPY customers FROM '/migrations/customers.csv' CSV HEADER;,也可以通过working_dir docker选项更改容器的工作目录。

代码语言:javascript
复制
  migrations:
    image: migrate/migrate
    command: -database postgres://postgres:password@database:5432/database?sslmode=disable -path /migrations up
    volumes:
      - ./migrations:/migrations
    working_dir: /migrations

第二个选项可能更好一些,因为它不需要修改SQL代码。

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

https://stackoverflow.com/questions/72674050

复制
相关文章

相似问题

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