Я пытаюсь массово добавить данные из файла, я прочитал метод с этого портала, чтобы массово добавить данные с помощью пакетной обработки
http://krixisolutions.com/bulk-insert-grails-gorm/
Когда я использовал эту технику и изменил свое приложение в соответствии с ней, мой код не работает, я работал в течение нескольких дней, чтобы найти способ массового сохранения данных, чтобы ускорить процесс, простая ручная очистка занимает 4 минуты чтобы сохранить 1000 строк данных в базе данных, я хочу сделать это время как можно меньше
В приведенном ниже коде всякий раз, когда я отлаживаю код, который он останавливает после SessionFactory, я не понимаю, в чем проблема, поскольку я очень новичок в grails и не имею никакого опыта с sessionFactory или транзакциями.
Вот мой код:
runAsync {
res = benchmark { result ->
Session session = SessionFactory.openSession()
Transaction tx = (Transaction)session.beginTransaction()
groovyFile.eachLine {
String[] tagData = it.split(',')
def isTimeToLive = true
if (isTimeToLive) {
try {
caller = new Caller(callingNumber:
tagData.getAt(0), callerName: tagData.getAt(1))
session.save(caller)
} catch (Exception ex) {
log.error(ex.getMessage())
}
caller.validate()
if (caller.hasErrors()) {
println("message", "Invalid calling number. Digits can only be from 10 to 15.")
}
callCallerList = new CallCallerList(caller: caller, callerList: callerList)
callCallerList.validate()
if (callCallerList.hasErrors()) {
println("message", "Invalid calling number. Digits can only be from 10 to 15.")
} else {
session.save(callCallerList)
}
}
count++;
if (count % 100 == 0) {
session?.flush()
session?.clear()
}
}
tx.commit();
session.close();
}
}
}