crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Замедление вставки в QSQLITE, Загнать большой txt файл в БД
cupersuper
  опции профиля:
сообщение 19.7.2014, 10:16
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 5.5.2011
Пользователь №: 2654

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте! Подскажите, пожалуйста, что можно придумать?

Пытаюсь загнать большой текстовый файл 30ГБ (500 млн строк) в базу данных SQLITE. Миллион строк влетают очень быстро, а дальше запись по мере роста БД начинает замедлятся.

....
#include <iostream>
#include <fstream>
using namespace std;
....

char str[99999];
ifstream in;
in.open(filename.toAscii());
in.seekg(0,ios::beg);


db.transaction();
QSqlQuery query;
query.prepare("INSERT INTO tablename (line, value) "
              "VALUES (:line, :value)");

while(in){

    in.getline(str, 99999);
    QString qstr = QString::fromLocal8Bit(str);


    if(in && qstr != "")
    {
        QStringList qstrlst = qstr.split(";");
        QString line = qstrlst.at(0);
        QString value = qstrlst.at(1);

        query.bindValue(":line", line);
        query.bindValue(":value", value);
        query.exec();
    }

}
db.commit();
in.close();
....


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
cupersuper
  опции профиля:
сообщение 19.7.2014, 17:02
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 5.5.2011
Пользователь №: 2654

Спасибо сказали: 0 раз(а)




Репутация:   0  


По всей видимости в самом цикле возникает проблема, как посмотреть на более низком уровне не совсем понимаю.

В системе жёсткий диск на запись занят на 100%, на чтение на 90-95%, проц почти не грузится
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2024, 8:47