Pregunta ¿Cómo se enumeran las tablas en un archivo de base de datos SQLite que se abrió con ATTACH?


Qué SQL se puede usar para enumerar las tablas y las filas dentro de esas tablas en un archivo de base de datos SQLite, una vez que lo he adjuntado con el ATTACH comando en la herramienta de línea de comandos SQLite 3?


1017
2017-09-17 12:59


origen


Respuestas:


los .tablesy .schema las funciones "auxiliares" no miran las bases de datos ATTACHed: solo consultan el SQLITE_MASTER tabla para la base de datos "principal". En consecuencia, si utilizó

ATTACH some_file.db AS my_db;

entonces tienes que hacer

SELECT name FROM my_db.sqlite_master WHERE type='table';

Tenga en cuenta que las tablas temporales no se muestran con .tables o bien: tienes que enumerar sqlite_temp_master para eso:

SELECT name FROM sqlite_temp_master WHERE type='table';

449
2017-09-17 13:30



Hay algunos pasos para ver las tablas en una base de datos SQLite:

  1. Enumere las tablas en su base de datos:

    .tables
    
  2. Enumera cómo se ve la tabla:

    .schema tablename
    
  3. Imprime toda la tabla:

    SELECT * FROM tablename;
    
  4. Enumere todos los comandos de solicitud de SQLite disponibles:

    .help
    

1187
2017-09-17 13:02



Parece que necesitas pasar por el sqlite_master mesa, como esta:

SELECT * FROM dbname.sqlite_master WHERE type='table';

Y luego examine manualmente cada tabla con un SELECT o similar para mirar las filas.

los .DUMP y .SCHEMA comandos no parece ver la base de datos en absoluto.


419
2017-09-17 13:01



Para mostrar todas las tablas, use

SELECT name FROM sqlite_master WHERE type = "table"

Para mostrar todas las filas, supongo que puede recorrer todas las tablas y simplemente hacer un SELECCIONAR * en cada una. Pero tal vez un DUMP es lo que buscas?


138
2017-09-17 13:06



Utilizar .help para verificar si hay comandos disponibles

.table

Este comando mostraría todas las tablas debajo de su base de datos actual.


65
2017-08-31 04:13



Hay un comando disponible para esto en la línea de comandos de SQLite:

.tables ?PATTERN?      List names of tables matching a LIKE pattern

Que se convierte al siguiente SQL:

SELECT name FROM sqlite_master
WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
WHERE type IN ('table','view')
ORDER BY 1

36
2017-09-17 13:06



Para enumerar las tablas, también puede hacer:

SELECT name FROM sqlite_master
WHERE type='table';

34
2017-09-17 13:04



Tratar PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema


26
2018-06-07 02:53



De acuerdo con la documentación, el equivalente de MySQL ' SHOW TABLES; es:

El comando ".tables" es similar al modo de lista de configuración que se ejecuta   la siguiente consulta:

SELECT name FROM sqlite_master
  WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
  WHERE type IN ('table','view')
ORDER BY 1;

Sin embargo, si está comprobando si existe una sola tabla (o para obtener sus detalles), consulte @LuizGeron responder.


14
2018-01-31 10:47