Java:从现有表生成创建表代码

Java:从现有表生成创建表代码,java,sql,derby,Java,Sql,Derby,有没有办法从Derby数据库中的现有表生成CREATE TABLE代码?还是收集必要表信息的简单方法?我没有任何使用derby的经验,但您可以尝试使用JDBC API收集数据库元数据您可以尝试使用该工具将Apache derby数据库表转储到sql文件中。如果您只想使用CREATE语句重新创建表,这对我很有用: CREATE TABLE new_table AS SELECT * FROM old_table WITH NO DATA; 但是,如果您真的想将CREATE语句用于创建类似表以外的

有没有办法从Derby数据库中的现有表生成CREATE TABLE代码?还是收集必要表信息的简单方法?

我没有任何使用derby的经验,但您可以尝试使用JDBC API收集数据库元数据

您可以尝试使用该工具将Apache derby数据库表转储到sql文件中。

如果您只想使用CREATE语句重新创建表,这对我很有用:

CREATE TABLE new_table AS SELECT * FROM old_table WITH NO DATA;

但是,如果您真的想将CREATE语句用于创建类似表以外的其他用途,那么这并没有帮助。

好吧,这个问题已经问了6年了,但下面的屏幕截图显示了一种简单的方法来完成您想要的操作。我希望你没有等

右键单击您感兴趣的表,然后选择
Scripts
->
createtablescript

当您选择此菜单项时,您将看到一个包含SQL的窗口,例如

CREATE TABLE "JOOMP"."METRICLEVELS"
(
   LEVELID int NOT NULL,
   LEVELNAME varchar(30) NOT NULL
)
;
如果您还希望SQL使用现有数据填充表,请使用
脚本
->
创建数据脚本
。对于本例,您将获得:

INSERT INTO "JOOMP"."METRICLEVELS" (LEVELID,LEVELNAME) VALUES (2,'Project');
INSERT INTO "JOOMP"."METRICLEVELS" (LEVELID,LEVELNAME) VALUES (3,'Package Fragment Root');
INSERT INTO "JOOMP"."METRICLEVELS" (LEVELID,LEVELNAME) VALUES (4,'Package Fragment');
INSERT INTO "JOOMP"."METRICLEVELS" (LEVELID,LEVELNAME) VALUES (5,'Compilation Unit');
INSERT INTO "JOOMP"."METRICLEVELS" (LEVELID,LEVELNAME) VALUES (7,'Type');
INSERT INTO "JOOMP"."METRICLEVELS" (LEVELID,LEVELNAME) VALUES (9,'Method');

如果需要CREATE语句,这在MySQL中可以正常工作

SHOW CREATE TABLE `table_name`

有关更多信息,请参见

查看SchemaCrawler API以轻松获取表元数据。(苏亚莱·法特希,阴谋家)