AskoziaPBX
Безопасность
Редактор маршрутов (CFE)
Панель телефонии (CTI)
Интеграция с 1С
Прочее
AskoziaPBX
Безопасность
Редактор маршрутов (CFE)
Панель телефонии (CTI)
Интеграция с 1С
Прочее
База данных Sqlite в Askozia содержит две таблицы CDR и CEL. В обеих таблицах имеется первичный ключ, поле AcctID, который определяет уникальность записи в таблице.
Задачу по объединению нескольких БД sqlite Askozia можно разбить на два этапа:
Работы будем проводить на сервере АТС Askozia.
Если АТС рабочая, то работы следует проводить либо в нерабочее время, либо в промежуток времени с минимальным количеством звонков. Некоторые операции могут загрузить процессор до 100%, что скажется на качестве звука, в случае звонков в этот момент.
cd /storage/usbdisk1/askoziapbx/astlogs/asterisk/ cp master.db backup_master.db
cp master.db new_master.db
Основной базой у нас будет old_master.db. В нее мы будем загружать данные из базы new_master.db. Перед загрузкой данных нам необходимо обеспечить уникальность поля AcctID в обеих базах в обеих таблицах CDR и CEL.
sqlite3 old_master.db 'SELECT AcctID FROM cdr ORDER BY AcctID DESC LIMIT 1'
sqlite3 old_master.db 'SELECT AcctID FROM cel ORDER BY AcctID DESC LIMIT 1'
Получили в CDR макcимальный AcctID = 5678922, в CEL максимальный AcctID = 1649008.
sqlite3 new_master.db 'UPDATE cdr SET AcctId = AcctId+5678922'
sqlite3 new_master.db 'UPDATE cel SET AcctId = AcctId+1649008'
Выгрузим данные из новой базы new_master.db в файл sql для последующей загрузки в базу old_master.db.
sqlite3 new_master.db .dump > new_master_dump.sql
sqlite3 new_master.db .schema > new_master_schema.sql
grep -vx -f new_master_schema.sql new_master_dump.sql > data.sql
sqlite3 old_master.db < data.sql
mv old_master.db master.db
sqlite3 /storage/usbdisk1/askoziapbx/astlogs/asterisk/master.db 'SELECT AcctID FROM cdr ORDER BY AcctID DESC LIMIT 1'
sqlite3 /storage/usbdisk1/askoziapbx/astlogs/asterisk/master.db 'SELECT AcctID FROM cel ORDER BY AcctID DESC LIMIT 1'
sqlite3 /storage/usbdisk1/askoziapbx/astlogs/asterisk/master.db 'SELECT AcctID FROM cdr ORDER BY AcctID DESC LIMIT 1'
sqlite3 /storage/usbdisk1/askoziapbx/astlogs/asterisk/master.db 'SELECT AcctID FROM cel ORDER BY AcctID DESC LIMIT 1'