2010-02-19 19 views
5

Quiero eliminar todas las tablas que no tienen filas.¿Cómo se eliminan todas las tablas vacías en SQLite?

¿Cómo se eliminan todas las tablas vacías en SQLite?

EDITAR
tengo que hacer esto en un teléfono móvil (sin cáscara allí). En un teléfono con Windows Mobile.

+1

Lo más probable es que se pueda hacer en shelling script o perl. – Yada

+0

Necesito hacer esto en un teléfono móvil (sin shell). En un teléfono con Windows Mobile. – Pentium10

+0

Necesitamos saber qué idioma (s) están disponibles (porque de todos modos no tengo conocimiento). –

Respuesta

7

Las tablas se pueden descartar, tengan o no datos en ellas cuando se ejecuta el comando. No sé de ninguna base de datos que opere de otra manera. Así que eso significa:

1) Obtener una lista de tablas -

SELECT name 
    FROM sqlite_master 
WHERE type = 'table' 

2) iterar sobre esa lista, utilizando COUNT (*) para determinar si existen filas dentro de una tabla:

SELECT COUNT(*) 
    FROM ~table 

3) Si el número devuelto es menor que 1, ejecutar una instrucción DROP:

DROP TABLE ~table 

SQLite no tiene fu Soporte de procedimientos almacenados o almacenados: tendrá que hacer esto desde su aplicación.

+0

¿Qué es eso ~ antes de que el nombre de la tabla signifique? – Pentium10

+0

@ Pentium10: variable de psuedo. Si utilicé '$', la gente podría confundirlo con una variable de PHP. '@' es la sintaxis de MySQL y SQL Server ... –

+0

@ Pentium10: ¡Es una trampa! – Hogan

Cuestiones relacionadas