我的客户给了我一个项目的车辆 list 。我需要将它们放入我可以使用的表中,但它们当前位于 .cvs 文件中。我已经 read around和 found一些信息,但没有解决我的特殊问题。
我已经生成了一个与 .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/