2013-08-31 2 views
1

Из-за недавнего issues with the Google Apps Script ScriptDB у нас появилось много дубликатов записей в ScriptDB.Удаление дубликатов из Script Script ScriptDB

У нас есть приложение, которое извлекает данные из внешней системы и хранит в ScriptDB, если эти данные еще не существуют. Но из-за недавних проблем с ScriptDB, которые проверяли существование, не удалось. И наш скрипт постоянно добавлял одни и те же данные. Как мы можем пойти и очистить дубликаты? Нам просто нужна одна копия каждой записи данных.

ответ

1

Мне пришлось воссоздать множество бдсм тоже из-за этой ошибки. Я удалил весь bd и воссоздал его вручную, потому что я не доверяю возможно еще поврежденным записям. Если его не громадно, вы можете сбросить его на электронную таблицу и вручную удалить их, а затем воссоздать bd. Его не просто дублируют, вы также можете иметь похожие объекты, поскольку они были воссозданы, а позже только один обновляется.

+0

Ну, у меня есть 100 тысяч тысяч записей. Таким образом, повторное создание БД на самом деле не является вариантом ... –

+1

Не используйте scriptdb для чего-либо большего или что-либо критического. Это не первый раз, когда Google вызывает необратимое повреждение в scriptdb. –

+0

Я уверен, что Google работает над улучшением службы ScriptDB. Я думаю, что это отличный сервис с большим потенциалом. –

1

Если вы назначили свои уникальные идентификаторы для записей в базе данных, вы можете выполнить итерацию по всем возможным идентификаторам, которые ищут идентификаторы, имеющие более 1 записи. Я не буду писать весь код, но это общая схема:

1. Generate an array of all possible IDs 
2. For each ID in array, query ScriptDB for items with that ID 
3. If results.length > 1, remove the extras 
4. Goto 2 
5. Finish 

Конечно, это займет больше времени, чем на 6 минут с 100s тысяч записей, так что вам нужно некоторый код для сохранения/состояние нагрузки. Я использую ScriptProperties для сохранения, где я есть в массиве. Затем у меня есть функция, чтобы определить, достиг ли я 5,5 минут, после чего я останавливаюсь, чтобы избежать ошибки «Превышено максимальное время выполнения».

Если вы еще не используете уникальные идентификаторы, это будет немного логичнее, чтобы добавить к вашим функциям сохранения БД, чтобы предотвратить это в будущем.

+0

Да, у нас есть уникальный идентификатор альфа-номера для каждой записи. можете ли вы предоставить какой-то код для достижения того, что вы предложили? Благодарю. –

Смежные вопросы