删除 Derby DB 中的所有表
如何使用 JDBC 删除 Apache Derby DB 上架构中的所有表?
How do i delete all the tables in the schema on Apache Derby DB using JDBC?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何使用 JDBC 删除 Apache Derby DB 上架构中的所有表?
How do i delete all the tables in the schema on Apache Derby DB using JDBC?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(11)
对于执行此操作的实际代码,请检查 CleanDatabaseTestSetup.java 位于 Derby 发行版的 Derby 测试套件部分。
For actual code that does this, check CleanDatabaseTestSetup.java in the Derby test suite section of the Derby distribution.
在java中执行一个小方法,在其中执行
通过参数传递的
tablename
。查询形成的记录集
另一种方法是循环遍历由调用第一个方法的
。 Derby 最新文档
Do a little method in java in which you execute a
tablename
is passed by parameter.And another method in which you loop over a record set formed by the query
calling the first method.
Derby latest documentation
我认为大多数数据库提供商不允许 DROP TABLE * (或类似的)。
我认为最好的方法是显示表格,然后通过结果集循环执行每个删除。
HTH。
I think most db providers don't allow DROP TABLE * (or similar).
I think the best way would be to SHOW TABLES and then go through each deleting in a loop via a resultset.
HTH.
JDBC 允许您以与数据库无关的方式解决您的任务:
JDBC allows you to solve your task in a database agnostic way:
祝你好运。
Good Luck.
一个更简单的解决方案是使用 JDBC 运行“删除数据库 foo”,然后运行“创建数据库 foo”。 但是,这将导致数据库中的所有对象被删除(即不仅仅是表)。
A simpler solution is to use JDBC to run "drop database foo" then "create database foo". However, this will cause all objects in the DB to be deleted (i.e. not just tables).
如果您从命令提示符而不是通过 JDBC 工作,这应该可以帮助您入门。
If you're working from the command prompt rather than through JDBC, this should get you started.
一个简单的解决方案是右键单击 -> 断开连接,然后删除包含数据库的文件夹并重新连接。
A simple solution is to do right click -> disconnect then delete the folder containing your database and reconnect it.
从 http://squirrel-sql.sourceforge.net/ 下载 Squirrel SQL
连接到数据库。
展开表节点。
选择要删除的表。
右键单击并选择-> 脚本-> 删除表脚本
运行生成的查询
您甚至可以选择删除记录来清空选定的表。
Download Squirrel SQL from http://squirrel-sql.sourceforge.net/
Connect to the database.
Expand the TABLE node.
Select the tables that you want to drop.
Right click and select -> Scripts -> Drop table scripts
Run the generated queries
You can even select delete records to empty the selected tables.
对于那些希望以编程方式删除所有架构而不必每次手动复制粘贴 SQL 的人,这里的代码来自 org.apache.derbyTesting.junit.CleanDatabaseTestSetup 和 org.apache.derbyTesting.junit .JDBC。 您只需调用 dropAllSchemas(connection);
PS:当我将数据库从支持 DROP ALL OBJECTS 的 H2 迁移到 Apache Derby 时,此代码派上了用场,其中 不(头痛)。 我从 H2 迁移出来的唯一原因是它是一个完全内存数据库,对于我的服务器 RAM 来说太大了,所以我决定尝试 Apache Derby。 H2 比 Derby 更容易、更用户友好,我强烈推荐它。 我很遗憾我买不起 RAM 来继续使用 H2。
顺便说一句,对于那些受 Derby 缺乏 LIMIT 或 UPSERT 影响的人,请参阅这篇关于替换 FETCH NEXT 而不是 LIMIT 这一个关于正确使用 合并到。
For those wanting to delete all schemas programmatically without having to manually copy-paste SQL each time, here's code lifted from org.apache.derbyTesting.junit.CleanDatabaseTestSetup and org.apache.derbyTesting.junit.JDBC. You just call dropAllSchemas(connection);
PS: This code came in handy for when I migrated my database from H2 that does support DROP ALL OBJECTS, to Apache Derby which does not (headache). The only reason I migrated away from H2 is that it's a fully in-memory database and was getting too big for my server's RAM, so I decided to try Apache Derby. H2 is far easier and more user-friendly than Derby, I highly recommend it. I'm sad that I can't afford the RAM to keep using H2.
By the way, for those affected by Derby's lack of LIMIT or UPSERT, see this post about substituting FETCH NEXT instead of LIMIT and this one about correctly using MERGE INTO.
感谢博客:
步骤1:
运行 SQL 语句,但不要忘记将下面 2 处出现的 schema 名称“APP”替换为您的 schema 名称:
步骤 2:
上面执行的结果是一组 SQL 语句,将它们复制到SQL 编辑器,执行它们,然后约束和表被删除。
Thanks are due to the blog:
Step 1:
Run the SQL statement, but don't forget to replace the schema name 'APP' with your your schema name in the 2 occurrences below:
Step 2:
The result of the above execution is a set of SQL statements, copy them to the SQL editor, execute them, then the constraints and the tables are dropped.