Drop all tables command

alamodey picture alamodey · Feb 8, 2009 · Viewed 124k times · Source

What is the command to drop all tables in SQLite?

Similarly I'd like to drop all indexes.

Answer

paxdiablo picture paxdiablo · Feb 8, 2009

I don't think you can drop all tables in one hit but you can do the following to get the commands:

select 'drop table ' || name || ';' from sqlite_master
    where type = 'table';

The output of this is a script that will drop the tables for you. For indexes, just replace table with index.

You can use other clauses in the where section to limit which tables or indexes are selected (such as "and name glob 'pax_*'" for those starting with "pax_").

You could combine the creation of this script with the running of it in a simple bash (or cmd.exe) script so there's only one command to run.

If you don't care about any of the information in the DB, I think you can just delete the file it's stored in off the hard disk - that's probably faster. I've never tested this but I can't see why it wouldn't work.