У моей компании много очень больших файлов.
Текстовые файлы, таблицы CVS и пр.
Я хочу написать программу, которая читает все содержимое файла, строка за строкой, и записывает его в базу данных SQLite.
Программа работает точно так же, как и должна.
Но это слишком медленно.
Он пишет 50.000 записей почти за 2 минуты.
Но файлы, с которыми приходится иметь дело, если я буду использовать их в производстве, содержат более 10 000 000 записей. Некоторые из них в два раза больше.
Что означает, что мне нужно ускорить процесс.
Вот программа:
require 'sqlite3'
require 'benchmark'
system("clear")
db = SQLite3::Database.open "./database/BenchmarkBase.db"
counter = 0
bench = Benchmark.measure {
theFile = File.open("/root/Downloads/test/cellphoneNumbers.txt", 'r').each do |line|
begin
db.execute "INSERT INTO PhoneN(cellPhone) VALUES ('#{line}')"
print "Entry: "
print counter += 1
print " .. has been written into database." + "\r"
rescue SQLite3::Exception => e
puts "Exception occurred"
puts e
end
end
}
puts "time consumption: #{bench.real}"
db.close if db
Ускорение этого процесса практически не привело к повышению производительности. (или я сделал это неправильно.)
так что если у кого-то есть хорошая идея, как я могу добиться прогресса быстрее, пожалуйста, не стесняйтесь, скажите мне.
Заранее спасибо, VB