Импорт файла CSV в базу данных Rails sqlite3 - PullRequest
2 голосов
/ 07 августа 2009

Я создал базу данных Rails, используя следующую схему:

ActiveRecord::Schema.define(:version => 20090807141407) do

  create_table "trunks", :force => true do |t|
    t.integer  "npa"
    t.integer  "nxxFrom"
    t.integer  "nxxTo"
    t.string   "trnk"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

end

В моем файле CSV у меня есть только первые четыре столбца (npa, nxxFrom, nxxTo и trnk).

Как я могу импортировать данные CSV при обновлении двух последних столбцов?

Спасибо всегда

Ответы [ 3 ]

2 голосов
/ 07 августа 2009

Чтобы использовать модуль csv, который является частью стандартной библиотеки Ruby:

require 'csv'

# row will be an array with the fields in the order they appear in the file
CSV.open('myfile.csv', 'r') do |row|
  # assuming the fields in the CSV file are in order npa, nxxFrom, nxxTo, trnk
  # create and save a Trunk model for each row
  Trunk.create!(:npa => row[0], :nxxFrom => row[1], :nxxTo => row[2], :trnk => row[3])
end

Я не использовал quickcsv, но, глядя на документацию , подход кажется таким же.

2 голосов
/ 11 сентября 2009
1 голос
/ 07 августа 2009

Последние два столбца будут обновлены ActiveRecord. Если они существуют в схеме, ActiveRecord добавит значение для create_at и updated_at при создании объекта. Любые изменения объекта приведут к автоматическому обновлению столбца updated_at.

Таким образом, при импорте из CSV просто сопоставьте первые 4 столбца и сохраните объект. При извлечении объекта вы увидите, что два других значения также были установлены автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...