我想将CSV文件中的数据导入现有的数据库表.我不想保存CSV文件,只需从中获取数据并将其放入现有表中.我正在使用Ruby 1.9.2和Rails 3.
这是我的表:
create_table "mouldings", :force => true do |t|
t.string "suppliers_code"
t.datetime "created_at"
t.datetime "updated_at"
t.string "name"
t.integer "supplier_id"
t.decimal "length", :precision => 3, :scale => 2
t.decimal "cost", :precision => 4, :scale => 2
t.integer "width"
t.integer "depth"
end
Run Code Online (Sandbox Code Playgroud)
你能给我一些代码来告诉我最好的方法吗,谢谢.
目标:使用CRON任务(或其他预定事件)通过每晚从现有系统导出数据来更新数据库.
在现有系统中创建/更新/删除所有数据.该网站没有直接与该系统集成,因此rails应用程序只需要反映数据导出中出现的更新.
我有一个.txt约5,000种产品的文件,如下所示:
"1234":"product name":"attr 1":"attr 2":"ABC Manufacturing":"2222"
"A134":"another product":"attr 1":"attr 2":"Foobar World":"2447"
...
Run Code Online (Sandbox Code Playgroud)
所有值都是用双引号(")括起来的字符串,用冒号(:)分隔
领域是:
id: 唯一身份; 字母name: 产品名称; 任何角色vendor_name:string; 任何角色vendor_id:独特的供应商ID; 数字供应商信息在当前系统中未标准化.
这里的最佳做法是什么?是否可以删除产品和供应商表并在每个周期重写新数据?或者仅添加新行并更新现有行更好?
笔记:
Orders将通过夜间数据库导入持续生成的数据.OrderItems将需要连接到数据文件中指定的产品ID,因此我们不能依赖自动递增的主键对于每个导入都是相同的; 独特的字母数字ID将需要用于连接products到order_items.rake任务才能使用Product.create(...)和设置Vendor.create(...)语法.