删除Derby DB中的所有表

如何使用JDBC删除Apache Derby DB上架构中的所有表?

对于执行此操作的实际代码,请检查Derby分发的Derby测试套件部分中的CleanDatabaseTestSetup.java 。

感谢博客 :

步骤1:

运行SQL语句,但不要忘记在下面的2次出现中使用您的模式名称替换模式名称“APP”:

SELECT 'ALTER TABLE '||S.SCHEMANAME||'.'||T.TABLENAME||' DROP CONSTRAINT '||C.CONSTRAINTNAME||';' FROM SYS.SYSCONSTRAINTS C, SYS.SYSSCHEMAS S, SYS.SYSTABLES T WHERE C.SCHEMAID = S.SCHEMAID AND C.TABLEID = T.TABLEID AND S.SCHEMANAME = 'APP' UNION SELECT 'DROP TABLE ' || schemaname ||'.' || tablename || ';' FROM SYS.SYSTABLES INNER JOIN SYS.SYSSCHEMAS ON SYS.SYSTABLES.SCHEMAID = SYS.SYSSCHEMAS.SCHEMAID where schemaname='APP'; 

第2步:

上面执行的结果是一组SQL语句,将它们复制到SQL编辑器,执行它们,然后删除约束和表。

在java中执行一个小方法

 DROP TABLE [tablename] 

tablename由参数传递。

另一种方法是循环查询形成的记录集

 SELECT tablename FROM SYSTABLES 

调用第一种方法。

德比最新文档

我认为大多数数据库提供程序不允许DROP TABLE *(或类似)。

我认为最好的方法是SHOW TABLES,然后通过结果集遍历每个循环中的删除。

HTH。

JDBC允许您以数据库无关的方式解决您的任务:

  1. 打开连接
  2. 抓住DatabaseMetaData
  3. 使用它列出数据库JavaDoc中的所有表
  4. 迭代结果集并为每个表触发DROP TABLE
  1. 您必须从Derby DB系统目录生成模式和表名。
  2. 按关系排序所有表。
  3. 生成用于删除所有表的java语句
  4. 使用autoCommit()方法并将此方法设置为false。 遇到错误时进行手动提交或回滚事务。
  5. 运行java进程。 祝好运。

一个更简单的解决方案是使用JDBC运行“drop database foo”然后“create database foo”。 但是,这将导致删除DB中的所有对象(即不仅仅是表)。

如果您是从命令提示符而不是通过JDBC工作,那么这应该可以帮助您入门。

 SELECT 'DROP TABLE ' || schemaname ||'.' || tablename || ';' FROM SYS.SYSTABLES INNER JOIN SYS.SYSSCHEMAS ON SYS.SYSTABLES.SCHEMAID = SYS.SYSSCHEMAS.SCHEMAID ; 

一个简单的解决方案是右键单击 – >断开连接然后删除包含数据库的文件夹并重新连接。

从http://squirrel-sql.sourceforge.net/下载Squirrel SQL

连接到数据库。

展开TABLE节点。

选择要删除的表。

右键单击并选择 – >脚本 – >删除表脚本

运行生成的查询

您甚至可以选择删除记录来清空所选表。