- Регистрация
- 22.12.2014
- Сообщения
- 118
- Благодарностей
- 6
- Баллы
- 18
Здравствуйте!
Помогите, пожалуйста, подобрать вариант максимально быстрой очистки таблицы.
Имеется таблица CSV - 130 000 строк и список - 85 000 строк.
Количество строк в списке и таблице постоянно увеличивается.
Задача - удалить из таблицы строки, содержащие в любой колонке значения из списка.
В списке - только номера телефонов.
В таблице - 12 колонок, колонка с номерами телефонов, по которым нужно очистить таблицу - "H".
Комп - 6/12, 16ГБ.
Пробовал:
1 вариант:
Многопоток с физическими файлами списка и таблицы.
Брал из списка строку с удалением и удалял ее из таблицы.
Операция занимает 7 часов.
2. Копировал данные из файлов списка и таблицы в виртуальные список и таблицу без привязки к файлам.
Брал из списка строку с удалением и удалял ее из таблицы.
Затем выгружал очищенную таблицу в файл CSV.
Операция занимает тоже порядка 6...7 часов.
3. Нашел такой сниппет:
Копировал данные из файлов списка и таблицы в виртуальные список и таблицу без привязки к файлам.
Запускал код сниппета.
Затем выгружал очищенную таблицу в файл CSV.
Операция занимает 20 минут.
Но ... код, почему-то, у меня работает некорректно.
Хотя, в ветке где я его нашел, автор пишет, что работает нормально.
Остаются лишние не удаленные данные в таблице.
Помогите, пожалуйста, найти вариант максимально быстрой обработки в ZennoPoster.
Помогите, пожалуйста, подобрать вариант максимально быстрой очистки таблицы.
Имеется таблица CSV - 130 000 строк и список - 85 000 строк.
Количество строк в списке и таблице постоянно увеличивается.
Задача - удалить из таблицы строки, содержащие в любой колонке значения из списка.
В списке - только номера телефонов.
В таблице - 12 колонок, колонка с номерами телефонов, по которым нужно очистить таблицу - "H".
Комп - 6/12, 16ГБ.
Пробовал:
1 вариант:
Многопоток с физическими файлами списка и таблицы.
Брал из списка строку с удалением и удалял ее из таблицы.
Операция занимает 7 часов.
2. Копировал данные из файлов списка и таблицы в виртуальные список и таблицу без привязки к файлам.
Брал из списка строку с удалением и удалял ее из таблицы.
Затем выгружал очищенную таблицу в файл CSV.
Операция занимает тоже порядка 6...7 часов.
3. Нашел такой сниппет:
C#:
var firstList = project.Tables["TEMP_for_DELETE"];
var secondList = project.Lists["SPISOK_TEMP_FOR_DELETE"];
var rows = firstList.RowCount;
lock(SyncObjects.ListSyncer)
{
for(int i=0; i < secondList.Count; i++)
{
var str1 = secondList;
for(int j=firstList.RowCount-1; j >= 0; j--)
{
var str2 = firstList.GetCell(0,j);
if (str1 == str2)
{
firstList.DeleteRow(j);
}
}
}
}
Запускал код сниппета.
Затем выгружал очищенную таблицу в файл CSV.
Операция занимает 20 минут.
Но ... код, почему-то, у меня работает некорректно.
Хотя, в ветке где я его нашел, автор пишет, что работает нормально.
Остаются лишние не удаленные данные в таблице.
Помогите, пожалуйста, найти вариант максимально быстрой обработки в ZennoPoster.
Последнее редактирование модератором: