В рельсы Как вставить тысячи записей в таблицу

0

Я создал API, используя Ruby on Rails. когда я вызываю конечную точку API для вставки более 1000 записей, она разбивается. В настоящее время я использую базу данных Mysql2

мой код

quantity.times do
  User.create(first_name: "John")
end

где quantity - это количество записей, которые нужно вставить, и это может быть любое число, например, 10000, 4000000.

может кто-нибудь предложить мне, как я могу сделать это очень эффективно, не нарушая работу моего сервера

  • 1
    Разместите сообщение об ошибке, журнал или трассировку стека, если это возможно.
  • 0
    Я получаю эту ошибку на моем Production она не показывает никакого конкретного сообщения об ошибке. но сбой сервера, мой бэкэнд n Ruby on Rails и для внешнего интерфейса, я использую AngularJS
Показать ещё 2 комментария
Теги:

3 ответа

3

ActiveRecord.import

items = []
quantity.times.each do |row|
  items << User.new(name: "john")
end
User.import(items)

Просто взгляните на эти тесты, чтобы понять, насколько быстрее этот вариант. Вместо отдельных транзакций, Model.create и вставок, которые Model.create генерирует SQL, это обрабатывает его в одном запросе.

Рекомендации

0

попробуйте этот камень "activerecord-insert_many". В исходном коде найдите тесты, и вы можете увидеть, как их использовать.

Спасибо, Ajith

0

Я предлагаю вам использовать find_each и указать batch_size для его цикла.

Я думаю, что это предотвратит крах, если вы зациклируете огромное количество таких же, как ваш пример

  • 0
    Я не нахожу ничего, я делаю вставку
  • 0
    User.find_each (начало: 1, конец: кол-во раз, размер партии: 500) {| пользователь | user.create (first_name: "John")}
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню