Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/164: Рейтинг темы: голосов - 164, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
1

Удалить дубли документов

19.07.2010, 10:44. Показов 30863. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, накосячил с агентом. Результат: продублировались все документы в базе, как это исправить, тоесть удалить все дубли?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.07.2010, 10:44
Ответы с готовыми решениями:

Удалить дубли из списка
Есть программа которая делить числа на четные и нечетные, мне надо чтобы она ещё удаляла...

Как удалить дубли из БД?
Добрый день есть таблица Parse в ней поля idGroup idPost, хочу сделать эти два поля связанными но...

Как удалить дубли
Мне приходит на ум только select distinct * into table2 from table1; truncate table1; insert...

Удалить дубли из массива
Добрый день подскажи как реализовать = , то есть дубли должны удаляться. пока смог написать только...

28
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
19.07.2010, 10:46 2
Легко вычислить по автору и дате создания.
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
19.07.2010, 10:48 3
Цитата Сообщение от Medevic
Легко вычислить по автору и дате создания.
Дубли создались методом NotesDocument.CopyToDatabase(NotesDatabase)
Поэтому дата создания у них одинаковая
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
19.07.2010, 10:55 4
Я про это и говорю. Поиском или через представление по дате создания легко найти все дубли.
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
19.07.2010, 11:00 5
Цитата Сообщение от Medevic
Я про это и говорю. Поиском или через представление по дате создания легко найти все дубли.
Что то не могу догнать как это?
0
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
19.07.2010, 11:01 6
Created, Modified, Modified by...
Добавлено: GetModifiedDocuments method, @Created, @Modified и др.
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
19.07.2010, 11:08 7
Сделал вью по всем документам с категоризированой колонкой @text(@Created)+" - "+@DocChildren.
Получилось на некоторые даты-время по несколько десятов документов причем разных форм.
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
19.07.2010, 11:10 8
Даты могут отличаться на секунды/минуты.
Надо брать документы за период.
SELECT (@Created > [Дата - 5мин]) & (@Created < [Дата + 5мин])
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
19.07.2010, 11:11 9



Код
Set dc=dbd.AllDocuments
Call dbd.CreateCopy("",DirPath(0)+dbd.FileName)
Set doc=dc.GetFirstDocument
While Not doc Is Nothyng
Call doc.CopyToDatabase(dbd)
Set doc=dc.GetNextDocument(doc)
Wend
Для каждого документа по 1 копии
0
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
19.07.2010, 11:11 10
Получилось на некоторые даты-время по несколько десятов документов причем разных форм
Ну так может по несколько десятов документов и было создано. А нужную форму укажите в формуле отбора вида.
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
19.07.2010, 11:24 11
Может как то в цикле все документы сравнивать?
Цикл по всем дкументам текущий сравниваем со следущими, если находится идентичный то удаляем его.
ТОлько вот как сравнивать?

UPD: По размеру?


Код
Set dc=db.AllDocuments

Set docc=dc.GetFirstDocument
While Not docc Is Nothyng
Set docs=dc.GetNextDocument(docc)
While Not docs Is Nothyng
If docc.Size=docs.Size Then
set tmpdoc=dc.GetPreDocument(docs)
Call docs.remove(true)
set docs=tmpdoc
End If
Set docs=dc.GetNextDocument(docs)
Wend
Set docc=dc.GetNextDocument(docc)
Wend
Получится так сделать?
0
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
19.07.2010, 11:40 12
Что-то я так и не понял, чем не покатил поиск по created, modified?
В принципе у документов-копий created и modified должны совпадать до секунды - можно поплясать от этого.
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
19.07.2010, 11:51 13
Цитата Сообщение от alik86
Что-то я так и не понял, чем не покатил поиск по created, modified?
В принципе у документов-копий created и modified должны совпадать до секунды - можно поплясать от этого.
Тоесть искать дубли точно также как я написал выше по размеру, только по дате создания и изменения?
0
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
19.07.2010, 12:02 14
Создайте вид с формулой отбора SELECT ((Form = "Forma") & (@Created = @Modified)), он выдаст вам документы по нужной форме, которые были скопированы программно.
В общем случае при создании документа "ручками" created - это момент создания, а modified - момент сохранения, т.е. "modified - created = время заполнения полей документа". При программном копировании для документа эти моменты совпадают. Как-то так.
P.S. Только не забывайте про "7 раз отмерь - один раз отрежь" - перепроверьте, ибо я выдал лишь своё предположение. :ya_lamo:
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
19.07.2010, 12:17 15
Цитата Сообщение от alik86
Создайте вид с формулой отбора SELECT ((Form = "Forma") & (@Created = @Modified)), он выдаст вам документы по нужной форме, которые были скопированы программно.
В общем случае при создании документа "ручками" created - это момент создания, а modified - момент сохранения, т.е. "modified - created = время заполнения полей документа". При программном копировании для документа эти моменты совпадают. Как-то так.
P.S. Только не забывайте про "7 раз отмерь - один раз отрежь" - перепроверьте, ибо я выдал лишь своё предположение.
Проверил, не то, всего в бд было около 30000 документов, сейчас около 60000. тоесть ровно в 2 раза больше.
Сделал представление по указанной выше формуле, по этой форме было примерно 1300 доков сейчас по ней 2600, отображается только 20, какие еще есть варианты?


Юзеры скоро загрызут.... :ya_lamo:
0
0 / 0 / 0
Регистрация: 12.01.2009
Сообщений: 246
19.07.2010, 12:26 16
Отсортируй представление по общему параметру, и удаляй каждый первый(второй) документ
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
19.07.2010, 12:27 17
Цитата Сообщение от Darker
Отсортируй представление по общему параметру, и удаляй каждый первый(второй) документ
0
0 / 0 / 0
Регистрация: 12.01.2009
Сообщений: 246
19.07.2010, 12:31 18
Код
lead=true
set doc=view.getfirstdocument
while not doc is nothyng
lead=not lead
if lead then doc.ToRemove="1":call doc.save(true,False)
set doc=view.getnextdocument(doc)
wend

set col=db.Search({ToRemove="1"},Nothyng,0)
col.RemoveAll(1)
0
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
19.07.2010, 12:34 19
я ж с ума сойду
Зато наверняка усвоите, что НЕЛЬЗЯ экспериментировать на рабочей базе!
Высказывание: Последовательность "эксперимент -> *цензура*..ц -> чтение документации" даже из толковых админов/программеров тяжело выбить.
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
19.07.2010, 12:41 20
Цитата Сообщение от alik86
Зато наверняка усвоите, что НЕЛЬЗЯ экспериментировать на рабочей базе!
Высказывание: Последовательность "эксперимент -> *цензура*..ц -> чтение документации" даже из толковых админов/программеров тяжело выбить
Полностью согласен, что тяжело выбить, сколько раз уже зарекался не экспериментировать на раб базе
0
19.07.2010, 12:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2010, 12:41
Помогаю со студенческими работами здесь

Удалить дубли, но не сортировать
Попробовал удалить дубли так: var BuffEre:TStringList; begin Buffere:=TStringList.Create; ...

Удалить дубли в списке
Друзья, помогите пожалуйста! Требуется удалить &quot;зеркальные&quot; дубли из списка. К примеру: ,,]...

Найти дубли в массиве (не удалить!)
Добрый вечер! Столкнулся с такой проблемой, нужно из заполненного массива &quot;arrr1&quot; вытащить все...

Sqlite не могу удалить дубли
Искал в интернете, нашел несколько вариантов, например Delete t1 FROM table1 as t1, table1 as t2...

Как удалить дубли страниц
Допустим, есть страничка mysite.ru/page.html , если в браузере вбить mysite.ru/page - то...

Удалить дубли слов в строках
Помогите очистить строки от повторных слов Пример текста: слово текст текст текст слово...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru