Return to main dbmstools documentation page.
dbclear is a tool to delete data from tables in a database, either directly or by producing an SQL script to be executed later.
By default, all tables in the database are cleared. However, this can be restricted by schema and/or by table.
Because this script needs to get at metadata for the database, it uses the dbmsjy wrapper and a JDBC driver. See the dbmsjy page for details.
You use the tool like this:
dbmsjy.py dbclear.py [dbOptions] [generalOptions]
or, specifying JDBC details directly:
dbmsjy.py dbclear.py [jdbcOptions] [generalOptions]
-d dbms | Name of the DBMS. Required. Values recognised are: postgres7, postgres8, mssql, oracle, mysql, hsql |
-D dbName | Name of the database to connect to. Required |
-H dbHost | Name or IP address of the database host to connect to. Optional, defaults to localhost |
-P dbPort | Port of the database host to connect to. Optional, defaults to the default port for the DBMS |
-c driverClass | Fully-qualified name of the JDBC driver class, e.g. org.postgresql.Driver. If omitted, will be defaulted based on URL. Must be present in classpath, usually by placing in the jdbc-drivers directory |
-j JDBC_URL | JDBC URL for connecting to the database, in the format expected by the JDBC driver, e.g. jdbc:postgresql://localhost:5432/PS30 Required |
-e tableName | Specifically exclude this table (add a -e option for each table you want to exclude) |
-f filepath | Output file path. If omitted, output to stdout |
-h | Shows this screen |
-i tableName | Specifically include this table (add a -i option for each table you want to include) |
-p password | Password to use to connect to DB (if required) |
-s schema | Schema name to export (defaults to all schemas) |
-u username | Username to use to connect to DB (if required) |
-v | Enable verbose logging (to stderr) |
-x | Execute - rather than generating a script to clear the database, actually clear it using JDBC. |
--force-delete | Always delete, rather than truncating |
--version | Print version number and exit |
See the dbmsjy page for details of default JDBC drivers and URLs etc.
Clear (directly) all tables from a local Postgres database called mydb:
$ dbmsjy.py dbclear.py -u fred -p itsasecret -d postgres8 -D mydb -x
Generate an SQL script (to stdout) to clear 2 named tables from a local MySQL database:
$ dbmsjy.py dbclear.py -i tableone -i table2 -u fred -p itsasecret \ -d mysql -D mydb
Generate an SQL script (to a specified path) to clear all tables in the specified schema from an Oracle database on host bigserver:
$ dbmsjy.py dbclear.py -s theschema -f /tmp/clearItAll.sql \ -u fred -p itsasecret -d oracle -H bigserver -D mydb