El archivo que has encontrado es una base de datos SQLite y necesitas una aplicación que pueda leer bases de datos SQLite. Tienes muchas opciones: busca SQLite (o algo similar) en la Mac App Store o utiliza el comando Terminal sqlite3
.
Pero una base de datos SQLite no es sencilla. Es una serie de tablas interrelacionadas. Las conexiones entre las tablas definen las relaciones y de ahí el término "base de datos relacional". SQLite es tal vez la más sencilla de las bases de datos relacionales SQL, pero aun así resulta intimidante para el usuario novel.
Para dar sentido a una base de datos SQLite se necesita:
- Una aplicación - Yo uso "SQLPro for SQLite" de la Apple App Store. Su página web es SQLitePro
- Una consulta para extraer los datos que desea. He hecho "trampa" y he encontrado una aquí Consulta SQL para el chat .
Pasos para leer chat.db:
- Haz una copia de la base de datos - yo copié la mía en el Escritorio.
- Ejecuta tu aplicación y abre el chat.db.
- elija la pestaña de consulta.
- Introduzca esta consulta:
Copiar y pegar
select
m.rowid
,coalesce(m.cache_roomnames, h.id) ThreadId
,m.is_from_me IsFromMe
,case when m.is_from_me = 1 then m.account
else h.id end as FromPhoneNumber
,case when m.is_from_me = 0 then m.account
else coalesce(h2.id, h.id) end as ToPhoneNumber
,m.service Service
/*,datetime(m.date + 978307200, 'unixepoch', 'localtime') as TextDate -- date stored as ticks since 2001-01-01 */
,datetime((m.date / 1000000000) + 978307200, 'unixepoch', 'localtime') as TextDate /* after iOS11 date needs to be / 1000000000 */
,m.text MessageText
,c.display_name RoomName
from
message as m
left join handle as h on m.handle_id = h.rowid
left join chat as c on m.cache_roomnames = c.room_name /* note: chat.room_name is not unique, this may cause one-to-many join */
left join chat_handle_join as ch on c.rowid = ch.chat_id
left join handle as h2 on ch.handle_id = h2.rowid
where
-- try to eliminate duplicates due to non-unique message.cache_roomnames/chat.room_name
(h2.service is null or m.service = h2.service)
order by m.date desc;
- Ejecuta la consulta.
Así puedo ver todos mis mensajes (he aplastado algunas de las columnas para ocultar parcialmente mi contenido):
Puedes usar diferentes aplicaciones - yo he usado dbHarbour (gratis, creo).
O puedes hacerlo en el Terminal con unos simples comandos:
gilby@Beth/Users/gilby/Desktop% sqlite3 chat.db
SQLite version 3.32.3 2020-06-18 14:16:19
Enter ".help" for usage hints.
sqlite> .mode csv
sqlite> .output chat.csv
sqlite> select <<<< Just copy and paste the query from above
...> m.rowid
...> ,coalesce(m.cache_roomnames, h.id) ThreadId
...> ,m.is_from_me IsFromMe
...> ,case when m.is_from_me = 1 then m.account
...> else h.id end as FromPhoneNumber
...> ,case when m.is_from_me = 0 then m.account
...> else coalesce(h2.id, h.id) end as ToPhoneNumber
...> ,m.service Service
...>
...> /*,datetime(m.date + 978307200, 'unixepoch', 'localtime') as TextDate -- date stored as ticks since 2001-01-01 */
...> ,datetime((m.date / 1000000000) + 978307200, 'unixepoch', 'localtime') as TextDate /* after iOS11 date needs to be / 1000000000 */
...>
...> ,m.text MessageText
...>
...> ,c.display_name RoomName
...>
...> from
...> message as m
...> left join handle as h on m.handle_id = h.rowid
...> left join chat as c on m.cache_roomnames = c.room_name /* note: chat.room_name is not unique, this may cause one-to-many join */
...> left join chat_handle_join as ch on c.rowid = ch.chat_id
...> left join handle as h2 on ch.handle_id = h2.rowid
...>
...> where
...> -- try to eliminate duplicates due to non-unique message.cache_roomnames/chat.room_name
...> (h2.service is null or m.service = h2.service)
...>
...> order by m.date desc; <<<< Press Return
sqlite>
Los comandos de modo y salida se encargan de que la salida vaya a un archivo CSV que se puede abrir en una hoja de cálculo. La consulta es exactamente igual que antes.
Es una inmersión bastante profunda en SQLite. Mucha suerte.
0 votos
Mostrar archivos ocultos con MAYÚSCULAS-COMANDO-PERÍODO. Creo que fie IS una base de datos sqllite por lo que debería funcionar.
0 votos
Gracias por la rápida respuesta. Pero eso realmente no hace nada diferente que el enfoque CLI. Y tienes razón en que se trata de una base de datos SQLite.
0 votos
Es una base de datos SQLite y puedes abrirla con una aplicación SQLite. Hay muchas en la App Store. Pero necesitas a alguien que te proporcione una "consulta" que presente los datos de forma significativa. Mis habilidades están un poco oxidadas (y nunca fueron buenas) de lo contrario haría una respuesta con una consulta adecuada. Tal vez alguien... Y haz SIEMPRE una copia de la base de datos antes de jugar con ella.
0 votos
También puedes abrir bases de datos SQLite en Terminal. Sólo tiene que utilizar el comando
sqlite3 chat.db
para empezar. Repito, haz SIEMPRE una copia de la base de datos antes de meterte con ella.0 votos
He encontrado una consulta y por eso he hecho una respuesta.
0 votos
¿Qué es el periodo?