sannychan 2009-08-31 19:24
浏览 143
已采纳

如何能够自动生成这样的脚本

有一个表sanny_goods,
通过developer的“输出数据库对象”功能可以得到如下脚本
[code="sql"]create table SANNY_GOODS
(
CODE VARCHAR2(100),
NAME VARCHAR2(100),
PRICE BINARY_DOUBLE,
TOTAL NUMBER
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
comment on table SANNY_GOODS
is '商品表';
comment on column SANNY_GOODS.CODE
is '商品编码';
comment on column SANNY_GOODS.NAME
is '商品名称';
comment on column SANNY_GOODS.PRICE
is '商品价格';
comment on column SANNY_GOODS.TOTAL
is '商品库存';
alter table SANNY_GOODS
add constraint PK_SANNYGOODS_CODE primary key (CODE)
using index
tablespace SANNY_INDEX
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
alter table SANNY_GOODS
add constraint NN_SANNYGOODS_CODE
check ("CODE" IS NOT NULL);
[/code]

但是我想通过java程序输出这样的sql脚本,大家觉得可以实现吗,?可以怎么样写sql语句来实现,麻烦大家了:
[code="sql"]create table sanny_goods(
code varchar2(100) constraint NN_sannygoods_code not null,
name varchar2(100),
price binary_double,
total number,
constraint PK_SANNYGOODS_CODE primary key(code) using index tablespace sanny_index
);
comment on table sanny_goods is '商品表';
comment on column sanny_goods.code is '商品编码';
comment on column sanny_goods.name is '商品名称';
comment on column sanny_goods.price is '商品价格';
comment on column sanny_goods.total is '商品库存';
[/code]
[b]问题补充:[/b]
lovewhzlq,你好,

就是通过java+ibatis,运行程序手动输入表名,
运行就会自动生成一个sql文件,里面即为我需要的标准的脚本。

主要是现在sql查询有几个地方还没有解决,如何查出这个表的哪一个字段是主键,主键名,及其所用的表空间;

还有外键,呵呵

  • 写回答

2条回答 默认 最新

  • wanghaolovezlq 2009-08-31 20:04
    关注

    用jdbc去做嘛,先去熟悉看下jdbc的api,里面是有DatabaseMetaData这个类最重要

    public interface DatabaseMetaData关于数据库的整体综合信息。

    此接口由驱动程序供应商实现,让用户了解 Database Management System (DBMS) 在与驱动程序(基于与其一起使用的 JDBCTM 技术(“JDBC 驱动程序”))相结合时的能力。不同的关系 DBMS 常常支持不同的功能,以不同方式实现这些功能,并使用不同的数据类型。此外,驱动程序可以实现 DBMS 提供的顶级功能。此接口中的方法返回的信息关系到一起工作的特定驱动程序和特定 DBMS 的能力。注意,正如此文档中所使用的那样,术语“数据库”通常既指驱动程序,又指 DBMS。

    此接口的用户通常是一个需要发现如何处理基础 DBMS 的工具。对于试图与多个 DBMS 一起使用的应用程序而言尤其如此。例如,一个工具可能使用 getTypeInfo 方法找出可以在 CREATE TABLE 语句中使用的数据类型。或者用户可能调用 supportsCorrelatedSubqueries 方法查看是否可以使用相关子查询,或者调用 supportsBatchUpdates 查看是否可以使用批量更新。

    有些 DatabaseMetaData 方法以 ResultSet 对象的形式返回信息列表。常规 ResultSet 方法,比如 getString 和 getInt,可用于从这些 ResultSet 对象中检索数据。如果给定形式的元数据不可用,则 ResultSet 获取方法抛出 SQLException。

    有些 DatabaseMetaData 方法使用 String 模式的参数。这些参数都有 fooPattern 这样的名称。在模式 String 中,"%" 表示匹配 0 个或多个字符的任何子字符串,"_" 表示匹配任何一个字符。仅返回匹配搜索模式的元数据项。如果将搜索模式参数设置为 null,则从搜索中删除参数标准。

    获得关于驱动程序不支持功能的信息的方法将抛出 SQLException。在这些方法返回 ResultSet 对象的情况下,要么返回一个 ResultSet 对象(可能为空),要么抛出 SQLException。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?