2011-12-29 3 views
2

Как в заголовке .. Я хочу создать таблицу в своем db, а затем заполнить ее записями из моего файла csv (tab is ";"). Там записи (и целая таблица) не будут обновляться или меняться кем-либо. Мне просто нужно создать db (только Postgres) с этими записями. Я хочу, чтобы впоследствии случайно из этой таблицы случайно были сделаны записи. Какие-нибудь советы? Или, может быть, выбор из случайных записей напрямую из csv file instad из db - лучшее решение? Plz helpБыстрое решение для заполнения таблицы создания и заполнения таблицы db с данными из файла csv

ответ

2

Вы можете сделать инструмент командной строки, который читает ваш файл cvs и использовать ActiveModel для связи с базой данных. В этом случае вы создаете свою модель и базу данных так же, как и в любом другом приложении.

Чтобы прочитать ваши резюме файла вы culd это сделать:

require 'csv' 

CSV.foreach(fileName, :headers => true, encoding: "UTF-8") do |row| 
    row['myfiled'].to_s 
end 

Вам нужен Csv камень, и вы должны заменить MyField с именем столбца, который нужно использовать. Если у вас есть данные в рубине, вы создаете свои модели, как если бы вы были в рельсах. Поместите определения в один и тот же файл или используйте для ссылки на ваши модели.

В качестве альтернативы вы можете просто прочитать файл cvs и произвольно решить, хотите ли вы использовать данные. В этом случае вам не нужно помещать его в базу данных.

+0

спасибо! Но можете ли вы предложить, какой путь быстрее? У моего файла csv есть около 100 000 строк (записей), поэтому я думаю, что работа на db будет быстрее, чем открытие большого файла каждый раз, правильно? – mrmnmly

+1

Это зависит от того, сколько раз вы хотите получить от него случайные строки. Если вы хотите сделать это только один раз, когда решение cvs будет быстрее (вам не нужны накладные расходы на сохранение данных). Но если вы хотите запустить его несколько раз, поместите его в базу данных. В этом случае вы только разобираете cvs один раз, и все прочитанные идут в базу данных. –

+0

как добавить путь к файлу, если мой файл csv находится в файле/images/file.csv? – mrmnmly

Смежные вопросы