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

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

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

Студворк — интернет-сервис помощи студентам
Всем привет, накосячил с агентом. Результат: продублировались все документы в базе, как это исправить, тоесть удалить все дубли?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.07.2010, 10:44
Ответы с готовыми решениями:

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

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

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

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



Code
1
2
3
4
5
6
7
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.10.2008
Сообщений: 506
19.07.2010, 11:24
Может как то в цикле все документы сравнивать?
Цикл по всем дкументам текущий сравниваем со следущими, если находится идентичный то удаляем его.
ТОлько вот как сравнивать?

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


Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
Что-то я так и не понял, чем не покатил поиск по created, modified?
В принципе у документов-копий created и modified должны совпадать до секунды - можно поплясать от этого.
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
19.07.2010, 11:51
Цитата Сообщение от alik86
Что-то я так и не понял, чем не покатил поиск по created, modified?
В принципе у документов-копий created и modified должны совпадать до секунды - можно поплясать от этого.
Тоесть искать дубли точно также как я написал выше по размеру, только по дате создания и изменения?
0
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
19.07.2010, 12:02
Создайте вид с формулой отбора 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
Цитата Сообщение от 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
Отсортируй представление по общему параметру, и удаляй каждый первый(второй) документ
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
19.07.2010, 12:27
Цитата Сообщение от Darker
Отсортируй представление по общему параметру, и удаляй каждый первый(второй) документ
0
0 / 0 / 0
Регистрация: 12.01.2009
Сообщений: 246
19.07.2010, 12:31
Code
1
2
3
4
5
6
7
8
9
10
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
я ж с ума сойду
Зато наверняка усвоите, что НЕЛЬЗЯ экспериментировать на рабочей базе!
Высказывание: Последовательность "эксперимент -> *цензура*..ц -> чтение документации" даже из толковых админов/программеров тяжело выбить.
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
19.07.2010, 12:41
Цитата Сообщение от alik86
Зато наверняка усвоите, что НЕЛЬЗЯ экспериментировать на рабочей базе!
Высказывание: Последовательность "эксперимент -> *цензура*..ц -> чтение документации" даже из толковых админов/программеров тяжело выбить
Полностью согласен, что тяжело выбить, сколько раз уже зарекался не экспериментировать на раб базе
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.07.2010, 12:41
Помогаю со студенческими работами здесь

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

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

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

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

Sqlite не могу удалить дубли
Искал в интернете, нашел несколько вариантов, например Delete t1 FROM table1 as t1, table1 as t2 WHERE t1.name = t2.name and t1.id &lt;...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru