Ruby - запись больших файлов в базу данных SQLITE требует большей скорости - PullRequest
0 голосов
/ 06 ноября 2018

У моей компании много очень больших файлов. Текстовые файлы, таблицы 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

...