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

标签 ruby-on-rails-3 csv postgresql-9.1

我的客户给了我一个项目的车辆 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/

相关文章:

ruby-on-rails - 使用相同的键合并值

ruby-on-rails - 允许使用字母、破折号 (-) 和点 (.) 的正则表达式

PHP - 分解数组中的值,输出到制表符分隔的文件

sql - PostgreSQL : Ordering columns to match custom criteria

MySQL 5.7.9、Rails 3.2、mysql2 0.3.20

ruby-on-rails - 使用 Carrierwave (HTML5) 一次将多个文件上传到 Rails 应用程序

magento - 如何在 magento 中导入时事通讯订阅者用户 csv

php - 将图像和描述加载到叠加层中 (HTML/CSS/PHP)

postgresql - 在 postgresql 9.1 中找不到 adminpack.sql

postgresql - 无法将行数分配给 plpgsql 中的变量