Con el shell SQLite, use la instrucción .schema
y use GREP para filtrar las líneas que contienen REFERENCES
.
De shell.c
en el repositorio de SQLite, la versión de hoy en el maletero, dos consultas:
SELECT sql
FROM (
SELECT sql sql, type type, tbl_name tbl_name, name name
FROM sqlite_master
UNION ALL
SELECT sql, type, tbl_name, name
FROM sqlite_temp_master
)
WHERE tbl_name LIKE shellstatic()
AND type != 'meta'
AND sql NOTNULL
ORDER BY substr(type, 2, 1), name
y
SELECT sql
FROM (
SELECT sql sql, type type, tbl_name tbl_name, name name
FROM sqlite_master
UNION ALL
SELECT sql, type, tbl_name, name
FROM sqlite_temp_master
)
WHERE type != 'meta'
AND sql NOTNULL
AND name NOT LIKE 'sqlite_%'
ORDER BY substr(type, 2, 1), name
El segundo es probablemente lo que usted está buscando.
Hola gracias Benoit. Debería haber mencionado que haré esto en un cliente de Android, así que no tendré acceso al shell SQLite. :( –
@Fergal Moran: respuesta actualizada – Benoit
Hola Benoit: esto me da el ddl completo para todas las tablas, lo cual es útil pero me deja con el problema de analizar las cosas específicas de la clave foránea. Probablemente sería más fácil para para llamar a PRAGMA foreign_keys sobre los resultados de "SELECT tbl_name FROM sqlite_master WHERE type = 'table'" pero estoy tratando de encontrar una manera más fácil de obtener esto? –