Реконструкция sms.db - PullRequest
       2

Реконструкция sms.db

3 голосов
/ 17 сентября 2011

Предыстория

Этим днем ​​я ответил на текст от моей подруги, затем, видимо, забыл заснуть, прежде чем положить его обратно в карман. Когда я вытащил его обратно через несколько минут, мой телефон решил нажать «Редактировать-> Очистить все» в разговоре, испарив с ней два года и историю двух SMS-сообщений. Несмотря на то, что у меня есть резервная копия телефона, на данный момент ему уже почти три недели, и есть достаточно серьезное обсуждение, которое я хотел бы восстановить; Я уже взял копию sms.db, но я думаю, что метод, который я использовал, пылесосил файл, поэтому в нем нет текстов, удаленных софт.

Мясо вопроса

У меня есть трехнедельная резервная копия моего sms.db, и у меня есть доступ к копии даты ее sms.db. Я бы хотел

  1. экспортировать тексты, которые она имеет, но я не делаю (легко, по крайней мере, в CSV)
  2. изменить информацию о перспективах (поле address и поле sent/received/deleted/unknown), сохранив отметку времени и текст
  3. импортировать / объединить эти новые записи в my old sms.db backup
  4. объединить эту обновленную резервную копию с моей текущей sms.db (необязательно / кажется, для этого есть онлайн-утилита)

Я действительно не знаю SQL, но был бы готов учиться; у меня проблема в том, что из того, что я понимаю, таблицы в sms.db стали более взаимозависимыми в течение срока службы ОС, и триггеры теперь вызывают функции C, которые не существуют вне телефона, так что это не простой вопрос вызова один триггер на несколько записей. Кто-нибудь знает какие-либо способы обойти эту сложность, или даже лучше, какие-либо утилиты, которые уже выяснили, как импортировать отдельные записи в sms.db?

Edit:

Я изучал sms.db, и, насколько я могу судить, отношения довольно просты:

  • для message, мне нужно в основном убедиться, что ROWID всех добавленных сообщений выше текущего наибольшего ROWID
  • msg_group содержит message:ROWID последнего сообщения для каждого контакта; Я могу найти правильный address в пределах group_member; group_member:group_id соответствует msg_group:ROWID
  • msg_group имеет хеш-столбец; это, вероятно, будет самым трудным для обновления, так как я не сразу уверен, что он обновляет, или какой хеш использовать
  • sqlite_sequence не похоже, что это очень актуально; кажется, что все его записи меньше, чем фактические значения ROWID, но я предполагаю, что это означает, что мне не придется много с этим связываться.
  • Я не совсем уверен, что смогу вообще изменить msg_pieces: за обработку нескольких частей MMS-сообщения отвечает таблица.

1 Ответ

0 голосов
/ 21 августа 2012

Эй, ты разобрался? если нет, предлагаю взглянуть на http://smsmerge.homedns.org/

Я был в том же положении, что и вы, но мне повезло, и у меня была более свежая резервная копия, чем эта.

Дайте мне знать, если вам нужна рука с этим

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