Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to drop all empty tables in SQLite?

I want to drop all tables that does not have rows.

How to drop all empty tables in SQLite?

EDIT
I need to do this on a mobile phone (no shell there). On a Windows Mobile phone.

like image 253
Pentium10 Avatar asked Feb 19 '10 22:02

Pentium10


1 Answers

Tables can be dropped, whether or not they have data in them when the command is executed. Dunno of any database that operates otherwise. So that means:

1) Getting a list of tables -

SELECT name 
  FROM sqlite_master
 WHERE type = 'table'

2) Iterate over that list, using COUNT(*) to determine if any rows exist within a table:

SELECT COUNT(*) 
  FROM ~table

3) If the number returned is less than 1, execute a DROP statement:

DROP TABLE ~table

SQLite doesn't have function or stored procedure support - you'll have to do this from your application.

like image 176
OMG Ponies Avatar answered Nov 14 '22 21:11

OMG Ponies