gpt4 book ai didi

ruby-on-rails-3 - Rails 和 Postgres - 从 .cvs 复制到表,同时跳过 created_at 列

转载 作者:行者123 更新时间:2023-12-02 00:16:08 35 4
gpt4 key购买 nike

我的客户给了我一个项目的车辆 list 。我需要将它们放入我可以使用的表中,但它们当前位于 .cvs 文件中。我已经 read aroundfound一些信息,但没有解决我的特殊问题。

我已经生成了一个与 .cvs 文件(id、year、make、model、trim)中的信息相匹配的模型,运行迁移,现在有了我需要的表。当我尝试使用 psql COPY 时出现问题。这是我读过的内容:

copy list_vehicles from '/path/to/list.csv' DELIMITERS ',' CSV;

但它给了我
ERROR:  missing data for column "created_at"

很好,所以我试试这个:
copy list_vehicles (id, year, make, model, trim)  from '/path/to/list.csv' DELIMITERS ',' CSV;

我回来了
ERROR:  null value in column "created_at" violates not-null constraint

好的,那么这应该有效:
copy list_vehicles (id, year, make, model, trim)  from '/path/to/list.csv' DELIMITERS ',' WITH NULL AS ' ' CSV FORCE NOT NULL created_at;

不,
ERROR:  FORCE NOT NULL column "created_at" not referenced by COPY

我不知道从这里去哪里。我正在考虑暂时将 created_at 列取出,然后将其添加到另一个迁移中?任何指导将不胜感激。

谢谢

最佳答案

created_at大多数情况下,当您运行迁移为新模型创建表时,列是由 Rails 自动生成的。当您在应用程序中创建新模型对象时,它通常由 Rails 默认代码填充大部分时间。

但是,您将数据直接加载到数据库中,绕过了所有 Rails 代码。这很好,但您还需要做 Rails 所做的事情。

我认为最简单的方法是删除 created_at和数据库中的其他列,加载您的 CSV 文件,然后重新添加这些列。

关于ruby-on-rails-3 - Rails 和 Postgres - 从 .cvs 复制到表,同时跳过 created_at 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13021145/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com