oracle 自动生成建表文本

合集下载

Oracle根据Excel或者world数据字典自动生成建表语句和注释

Oracle根据Excel或者world数据字典自动生成建表语句和注释

Oracle根据Excel或者world数据字典⾃动⽣成建表语句和注释⼯作中⼀般会出现这种情况,和其他单位合作开发项⽬时,对⽅会给我们⼀份他们的数据字典,excl或者world的,这种情况下我们要根据数据字典将表结构建好,但是⼀个字段⼀个字段的去复制粘贴会点到⼿疼,⽽且还很容易出错,在这个情况下我⾃⼰做了⼀个⽣成建表脚本的⼩⽅法,详情如下:1、创建⽣成建表语句的存储过程:create table t_OUTString(Tname varchar2(50),OUTString clob,OUTSTRING2 clob,createddate date);create or replace procedure Pro_ExToSql(SStrin in varchar2 ,TString in varchar2) isRString varchar2(30000);RowString varchar2(30000);LeaveString varchar2(30000);midStr varchar2(30000);LeftStr varchar2(30000);RightStr varchar2(30000);V_Cname varchar2(100);V_Ctype varchar2(100);V_Ccomment varchar2(500);a number;b number;i number;j number;insertSql varchar2(30000);OUTString varchar2(30000);OUTString2 varchar2(30000);cursor curets isselect cname,ctype,ccomment from ets_temp order by createddate desc;beginj:=1;select replace(SStrin,'','#') into RString from dual;select instr(RString,chr(10)),substr(RString , j) into i,LeaveString from dual;while i>0 loopselect substr(LeaveString , j) into LeaveString from dual;select instr(LeaveString,chr(10)) into i from dual;if i is nullthengoto next;end if;select substr(LeaveString , 1 ,i ) into RowString from dual;j:=i+1;select instr(RowString,'#',1,1) ,instr(RowString,'#',1,2) into A,b from dual;select substr(RowString,a+1,b-a-1) ,substr(RowString,1,a-1),substr(RowString,b+1) into midStr,LeftStr,RightStrfrom dual;insertSql:='insert into ETS_temp(CComment,Cname,Ctype,createddate) values('''||midStr||''','''||LeftStr||''','''||RightStr||''',sysdate)';Execute IMMEDIATE insertSql;commit;end loop;<<next>>null;open curets;loopfetch curetsinto V_Cname, V_Ctype,V_Ccomment;exit when curets %NOTFOUND;OUTString:=''||OUTString||'COMMENT ON COLUMN '||TString||'.'||V_Cname||' is '''||V_Ccomment||''';'||chr(10)||'';outstring2:=''||outstring2||''||V_Cname||''||V_Ctype||','||chr(10)||'';end loop ;close curets;outstring2:='create table '||TString||''||chr(10)||'('||outstring2||');';select replace(replace(outstring2,''||chr(10)||',',','),','||chr(10)||');',');') into outstring2 from dual;insert into t_OUTString(Tname,OUTString,OUTSTRING2,createddate) values(Tstring,OUTString,OUTSTRING2,sysdate);commit;delete from ETS_temp;commit;EXCEPTIONWHEN OTHERS THENbegindelete from ETS_temp;commit;end;end Pro_ExToSql;2、执⾏过程会将建表语句insert到t_outstring表中outstring为创建注释语句,outstring2为建表语句:call pro_extosql('JGXLID 监管线路ID numberXLMC 线路名称 varchar2(50)DDFS 调度⽅式 varchar2(10)JHZLC 计划总⾥程 number(10,3)JHYYLC 计划营运⾥程 number(10,3)KSRQ 开始⽇期 datetimeZJZX 周⼏执⾏ varchar2(15)JHPCS 计划配车数 numberJHBCS 计划班次数 numberJHZGFPCS 计划早⾼峰配车数 numberJHWGFPCS 计划晚⾼峰配车数 numberJHZGFBCS 计划早⾼峰班次数 numberJHWGFBCS 计划晚⾼峰班次数 numberSZMC ⾸站名称 varchar2(50)MZMC 末站名称 varchar2(50)SZSB ⾸站⾸班 varchar2(5)SZMB ⾸站末班 varchar2(5)','TableName')3、在T_outstring表中取得以下信息:--outstring字段COMMENT ON COLUMN TableName.JGXLID is'监管线路ID';COMMENT ON COLUMN TableName.SZMB is'⾸站末班';COMMENT ON COLUMN TableName.DDFS is'调度⽅式';COMMENT ON COLUMN TableName.JHZLC is'计划总⾥程';COMMENT ON COLUMN TableName.JHYYLC is'计划营运⾥程';COMMENT ON COLUMN TableName.KSRQ is'开始⽇期';COMMENT ON COLUMN TableName.ZJZX is'周⼏执⾏';COMMENT ON COLUMN TableName.JHPCS is'计划配车数';COMMENT ON COLUMN TableName.JHBCS is'计划班次数';COMMENT ON COLUMN TableName.JHZGFPCS is'计划早⾼峰配车数';COMMENT ON COLUMN TableName.JHWGFPCS is'计划晚⾼峰配车数';COMMENT ON COLUMN TableName.JHZGFBCS is'计划早⾼峰班次数';COMMENT ON COLUMN TableName.JHWGFBCS is'计划晚⾼峰班次数';COMMENT ON COLUMN TableName.SZMC is'⾸站名称';COMMENT ON COLUMN TableName.MZMC is'末站名称';COMMENT ON COLUMN TableName.SZSB is'⾸站⾸班';COMMENT ON COLUMN TableName.XLMC is'线路名称';--outstring2字段create table TableName(JGXLID number,SZMB varchar2(5),DDFS varchar2(10),JHZLC number(10,3),JHYYLC number(10,3),KSRQ datetime,ZJZX varchar2(15),JHPCS number,JHBCS number,JHZGFPCS number,JHWGFPCS number,JHZGFBCS number,JHWGFBCS number,SZMC varchar2(50),MZMC varchar2(50),SZSB varchar2(5),XLMC varchar2(50));PS:这样就可以直接将SQL提取出来执⾏建表了!有更好的办法的希望⼤家在评论区留⾔,⼀起探讨!。

使用Oracle全文索引搜索文本

使用Oracle全文索引搜索文本

使用Oracle全文索引搜索文本不使用Oracle text功能,也有很多方法可以在Oracle数据库中搜索文本.可以使用标准的INSTR 函数和LIKE操作符实现。

SELECT *FROM mytext WHERE INSTR (thetext, 'Oracle') > 0;SELECT * FROM mytext WHERE thetext LIKE '%Oracle%';有很多时候,使用instr和like是很理想的, 特别是搜索仅跨越很小的表的时候.然而通过这些文本定位的方法将导致全表扫描,对资源来说消耗比较昂贵,而且实现的搜索功能也非常有限,因此对海量的文本数据进行搜索时,建议使用oralce提供的全文检索功能建立全文检索的步骤步骤一检查和设置数据库角色首先检查数据库中是否有CTXSYS用户和CTXAPP脚色。

如果没有这个用户和角色,意味着你的数据库创建时未安装intermedia功能。

你必须修改数据库以安装这项功能。

默认安装情况下,ctxsys用户是被锁定的,因此要先启用ctxsys 的用户。

步骤二赋权在ctxsys用户下把ctx_ddl的执行权限赋于要使用全文索引的用户,例:grant execute on ctx_ddl to pomoho;步骤三设置词法分析器(lexer)Oracle实现全文检索,其机制其实很简单。

即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle 称为term)找出来,记录在一组以dr$开头的表中,同时记下该term 出现的位置、次数、hash 值等信息。

检索时,Oracle 从这组表中查找相应的term,并计算其出现频率,根据某个算法来计算每个文档的得分(score),即所谓的‘匹配率’。

而lexer则是该机制的核心,它决定了全文检索的效率。

Oracle 针对不同的语言提供了不同的lexer, 而我们通常能用到其中的三个:n basic_lexer: 针对英语。

toad使用教程

toad使用教程

一、toad功能综述在oracle 应用程序的开发过程中,访问数据库对象和编写sql程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多sql脚本才能完成的。

quest software为此提供了高效的oracle应用开发工具-toad(tools of oracle application developers)。

在toad的新版本中,还加入了dba模块,可以帮助dba完成许多日常管理工作。

它最大的特点就是简单易用,访问速度快。

使用toad,我们可以通过一个图形化的用户界面快速访问数据库,完成复杂的sql和pl/sql代码编辑和测试工作。

toad由oracle开发专家专门为开发人员而设计,是一个功能强大、结构紧凑的专业化pl/sql开发环境。

toad 主要具有如下特点:模式浏览:模式浏览功能可以让我们快速访问数据字典,浏览数据库中的表、索引、存储过程。

toad 提供对数据库的快速访问,使用极为方便,用户界面简洁,结构安排合理。

当我们点击一个单独的数据库对象,toad立即显示此对象的详细信息。

例如,当我们点一个数据库的表,所有和此表相关的索引、约束、存储过程、sql语句以及和其他表的相互引用关系都在同一界面显示出来。

为了简化操作,用户可以在浏览窗口操作数据库对象。

sql 编辑器:sql 编辑器的主要功能是编辑、运行和调整sql语句。

toad 的高级编辑窗口包括众多的特性来提高开发人员编写sql语句的产品化程度。

例如,简单地生成代码模板,在编写sql前自动发现包的内容和列的名字等等。

sql 编辑器包括一个编辑窗口和运行结果窗口,允许开发人员在编辑的过程中测试运行结果。

sql编辑器中不仅包括标准的编辑命令,也包括一些增强的功能,如快速查询表中的字段、将sql语句的内容格式化等等。

这个窗口可以处理大到4gb 的内容,对大的开发项目来说非常有用。

便捷的书签可以让开发人员非常容易地找到相关位置。

ORACLE_自动生成插入语句

ORACLE_自动生成插入语句

ORACLE生成INSERT脚本。

1:定义一个存储过程:getInsertSqlFromDatacreateorreplaceprocedure getInsertSqlFromData(v_tname varchar2,v_cbatch number default0)/*作者:尹洪双日期:2016-05-19功能:根据表名和已有数据,生成其插入脚本。

参数:v_tname表名,v_cbatch时间间隔,默认为0*/as/* 声明动态游标变量 */type cur_alldata isrefcursor;l_alldatacur_alldata;/* 将单行数据写入v_row*/v_sql varchar2(3999);v_row varchar2(3999);/* 函数的前向声明 */function formatfield(v_tname varchar2,v_cname varchar2,v_colnonumber)return varchar2;/* 格式化数据输出 */function formatdata(v_tname varchar2,v_row varchar2)return varchar2asv_ldata varchar2(32765);v_rdata varchar2(32765);v_cname varchar2(3999);v_instr number(10);v_count number(6);beginv_instr:=instr(v_row,'(');v_ldata:=substr(v_row,1,v_instr);v_rdata:=substr(v_row,v_instr+1);v_instr:=instr(v_rdata,')');v_rdata:=substr(v_rdata,1,v_instr-1);v_count:=0;loopv_instr:=instr(v_rdata,',');exitwhen v_instr=0;v_cname:=substr(v_rdata,1,v_instr-1);v_rdata:=substr(v_rdata,v_instr+1);v_count:=v_count+1;/* 格式化不同的数据类型 */v_cname:=formatfield(v_tname,v_cname,v_count);/* 将处理后的字段值加入v_ldata */if v_count=1thenv_ldata:=v_ldata||v_cname;elsev_ldata:=v_ldata||','||v_cname;endif;endloop;/* 添加最后一个字段的值 */if v_count=1thenv_ldata:=v_ldata||formatfield(v_tname,v_rdata,v_count+1)||');';elsev_ldata:=v_ldata||','||formatfield(v_tname,v_rdata,v_count+1)||');'; endif;return v_ldata;end;/* 针对不同的数据类型进行处理 */function formatfield(v_tname varchar2,v_cname varchar2,v_colno number)return varchar2asv_name varchar2(3999);v_type varchar2(99);beginselect coltype into v_type from colwhere tname=upper(v_tname)and colno=v_colno;if v_type='DATE'thenv_name:='to_date('||''''||v_cname||''''||','||''''||'yyyy-mm-ddhh24:mi:ss'||''''||')';elsif v_type='VARCHAR2'thenv_name:=''''||v_cname||'''';elsev_name:=v_cname;endif;return v_name;end;/* 求输入表的字段列表 */function getfields(v_tname varchar2)return varchar2asv_fields varchar2(3999);beginfor cur_fname in(select cname,coltype from colwhere tname=upper(v_tname)orderby colno)loopif v_fields isnullthenv_fields:='nvl('||cur_ame||','||''''||'0'||''''||')';elsev_fields:=v_fields||'||'',''||'||'nvl('||cur_ame||','||''''||'0'||''''| |')';endif;endloop;v_fields:='select '||''''||'insert into '||v_tname||'values('||''''||'||'||v_fields||'||'||''''||')'||''''||' from'||v_tname;return v_fields;end;beginexecuteimmediate'alter session setnls_date_format='||''''||'yyyy-mm-dd hh24:mi:ss'||'''';v_sql:=getfields(v_tname);open l_alldata for v_sql;loopfetch l_alldata into v_row;exitwhen l_alldata%notfound;dbms_output.put_line(formatdata(v_tname,v_row));ifmod(l_alldata%rowcount,v_cbatch)=0thendbms_output.put_line('commit;');endif;endloop;close l_alldata;end;2:调用A、打开DBMS_OUTPUT。

toad for oracle 使用手册

toad for oracle 使用手册

toad for oracle 使用手册/a/db/oracle/2009/1020/2430_6.html#时间:2009-10-20 12:55来源:未知作者:admin 点击:408次目录一.Toad功能综述二.系统需求三.安装指南四.快速入门 1. Schema browser的用法简介 2. SQL Editor的使用介绍 3. Procedure Editor的用法介绍 4.如何进行PLSQL的debug 5.如何使用SQLab Xpert优化SQL 6.如何使用SQL Modeler来编写查询 7.目录一.Toad功能综述二.系统需求三.安装指南四.快速入门1. Schema browser的用法简介2. SQL Editor的使用介绍3. Procedure Editor的用法介绍4.如何进行PLSQL的debug5.如何使用SQLab Xpert优化SQL6.如何使用SQL Modeler来编写查询7.如何使用Toad的DBA方面的功能一、 Toad功能综述在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的。

Quest Software为此提供了高效的Oracle应用开发工具-Toad(Tools of Oracle ApplicationDevelopers)。

在Toad的新版本中,还加入了DBA模块,可以帮助DBA完成许多日常管理工作。

它最大的特点就是简单易用,访问速度快。

使用Toad,我们可以通过一个图形化的用户界面快速访问数据库,完成复杂的SQL和PL/SQL代码编辑和测试工作。

Toad由Oracle开发专家专门为开发人员而设计,是一个功能强大、结构紧凑的专业化PL/SQL开发环境。

Toad 主要具有如下特点:模式浏览:模式浏览功能可以让我们快速访问数据字典,浏览数据库中的表、索引、存储过程。

rdlc报表制作详细步骤

rdlc报表制作详细步骤

使用RDLC报表(一)1 建立数据源启动VS2005新建一个窗体项目,命名为TestProj在左边的窗体内选择“添加新数据源”或在菜单上操作“添加新数据源”:选择后出现对话窗体,选择“数据库”,进入“下一步”:本数据源以SqlServer2000所提供的Northwind数据库为例,因此在数据库内选择驱动程序为SqlServer,具体操作视所用数据库而定(如果连接为Oracle,建议用Oracle所提供的ODP for .NET,地址:/technol ogy/global/cn/software/tech/windows/odpnet/index.html)。

选择数据源后,指定数据库文件,并进行测试,如果连接不通,请检查你的软件设置。

进行下一步,至显示出库文件内的表及视图,然后打开表,并选择其中的Employ ees,选择完成。

在数据源窗口中显示出所选择表及表内的字段,以备使用。

同时在资源管理器中,也可以看到新增加的数据文件。

2 报表浏览器在新建的窗体内,放入报表浏览控件:此报表浏览控件集成了报表查看及打印预览的功能,可直接输出至打印机,也可直接输出至Excel文件或PDF文件,对于喜欢看Excel表格的客户来说,这个报表控件非常不错。

关于此报表的来源及台前幕后的各种说法,请自己查询相关的网站。

3 建立报表文件选中报表浏览器控件后,在控件的右上角会出现一个小三角,点击后,出现一个菜单,选择“设计新报表”或在解决方案资源管理器中添加一个新的报表文件:双击“报表项”内的“表”,则设计空白表内生成一个表格,我们可以在表格内添加数据项。

此报表的设计方式类似于MS以前的VB下报表设计环境。

在报表设计器中,我将一份报表分为五个部分,从上至下为:报表标题区、列标题区、数据显示区、合计及页脚。

如果将报表的设计形式显示出页眉及页脚,报表的形式会看得更清楚些:选择页眉及页脚:显示结果:现在开始设计报表:在“页眉”区内放入一个文本框,将内容更改为“测试报表”,居中,字体放大加粗:从数据源窗口中选择合适的列,用鼠标拖到报表内的“详细信息”表格上,数据会自动填入:将设计的报表保存后,返回报表浏览窗口,并为报表浏览器选择我们设计的报表:选中报表文件后,菜单也有所改变:再为此报表文件指定数据源,选择数据源:确定,保存文件并运行测试文件。

批量导出建表语句

批量导出建表语句

批量导出建表语句一、背景在进行数据库管理工作时,我们常常需要把现有数据库中的数据表结构导出为SQL脚本。

例如,备份数据库表结构、重建数据库、赋权等等。

这时,批量导出建表语句就显得尤为重要了。

二、需求批量导出建表语句的功能主要包括以下需求:1.导出指定数据库/指定表的建表语句。

2.导出的建表语句包括表结构、表注释以及默认值、约束等信息。

3.导出的建表语句格式清晰、易于阅读,并可进行自定义。

4.导出的建表语句能够支持不同数据库管理系统(如MySQL、Oracle、SQL Server等)。

三、实现实现批量导出建表语句的方式主要包括手动编写SQL 脚本、使用数据库管理工具以及开发脚本程序。

1.手动编写SQL脚本手动编写SQL脚本的方式比较繁琐,但也是一种简单有效的方法。

步骤如下:1)登录数据库,选择要导出建表语句的数据库。

2)使用DESC表名的方式获取表结构信息,然后根据需要手动编写建表语句。

3)将编写好的建表语句复制到文本文档中,进行保存。

虽然这种方式比较麻烦,但却是一种无需额外工具和语言的简单方法。

2.使用数据库管理工具可以借助一些数据库管理工具,如Navicat、Toad 等,非常方便地进行批量导出建表语句。

步骤如下:1)在数据库管理工具中打开指定数据库。

2)选择需要导出建表语句的表,右键菜单选择导出选项。

3)在导出选项中选择“导出表结构”或“导出DDL”等选项,然后设置导出路径、文件名等选项,最后点“导出”按钮即可。

使用数据库管理工具导出建表语句比较方便,而且可以进行格式化、自定义等处理。

3.开发脚本程序开发脚本程序也是一种可行的方法,可以快速、方便地进行批量导出建表语句。

步骤如下:1)选择需要开发脚本的编程语言,如Python、Java 等。

2)编写相应的程序,连接到指定的数据库,并使用相应的API来获取表结构信息。

3)根据获取的表结构信息,生成相应的建表语句,并将其保存到指定的文件中。

4)根据需要进行格式化、自定义等处理,最后得到最终的建表语句。

ORACLE性能AWR报告的使用和分析

ORACLE性能AWR报告的使用和分析

ORACLE性能诊断AWR报告的使用和分析为满足业务的运行要求,高性能要求是目前IT系统普遍面临的最棘手问题,尤其是客户面对着目前越来越庞大系统和数据,系统整合、数据大集中似乎成了趋势。

针对系统性能优化的诊断和分析,数据库方向又是其中的重要一环,本文将针对ORACLE中常用的性能诊断工具AWR报告,进行分析说明。

一、ORACLE性能诊断工具ORACLE数据库的性能的诊断工具有很多种,在9i之前主要通过手工进行采集分析,例如使用动态视图和Statspack报告来获取数据库性能状态信息,10g以后ORACLE数据库的性能诊断和改进建议越来越自动化,不过能够熟悉并掌握ORACLE的相关性能诊断工具的使用,仍对性能问题的准确和有效处理提供有利的帮助。

以下是ORACLE中常用的一些分析工具。

●动态性能视图动态性能视图是ORACLE中最常用,也是最简单的一种工具。

无论何种性能问题,都能在动态性能视图中找到线索,不过仅10g中动态性能视图就高达几百个,每个视图都包括很多诊断信息,想在众多的视图中找到问题的根源,也是一件费力的事情。

一般常用的动态性能视图有:v$session、v$session_wait、v$process、v$sql、v$lock、v$latch、v$sysstat、v$system_event、v$sgastat。

●Statspack报告statspack 是Oracle 9i 之前使用的一个数据库收集工具,收集了数据库全面信息,包括负载概览、前五个等待事件、高速缓存的大小、共享池中SQL语句、表空间和文件I/O、库高速缓存、SGA统计等。

●AWR和ADDM报告AWR是10g以后提供的一个新工具,Oracle 建议用户用这个取代Statspack,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题,并自动生成ADDM (自动数据库诊断监控)报告,为用户提供数据库性能诊断分析建议。

oracle批量查询建表语句

oracle批量查询建表语句

oracle批量查询建表语句Oracle数据库是一种常见的关系型数据库系统,常常被用于存储和处理大量数据。

在进行数据分析和数据挖掘时,我们常常需要从Oracle中查询大量的数据,并在本地进行分析。

这时,我们就需要将Oracle中的数据导出到本地进行处理。

但是,如果需要导出的数据非常多,手动创建大量的表格显然是不现实的,这时我们就需要使用Oracle批量查询建表语句,自动化地将数据导出到对应的表格中。

一、准备工作在进行批量查询建表语句之前,我们需要先创建一个包含需要导出数据的查询语句的文件。

这个文件可以是一个普通的txt文件,每一行表示一个查询语句。

比如,我们可以将以下查询语句保存到一个名为“query.txt”的文件中:select * from employees where department_id = 10;select * from employees where department_id = 20;select * from employees where department_id = 30;二、使用SQL*Plus创建表格SQL*Plus是Oracle提供的一个命令行工具,可以方便地从Oracle数据库中查询数据。

在本地电脑上安装了Oracle的客户端之后,我们就可以使用SQL*Plus来进行批量查询建表语句了。

1. 开启SQL*Plus在Windows系统下,我们可以通过Win+R快捷键打开“运行”窗口,然后输入“cmd”命令,进入命令行界面。

接着,输入“sqlplus username/password@database”连接到Oracle数据库。

其中,username表示Oracle数据库的用户名,password表示密码,database表示连接的数据库名。

2. 执行查询语句在SQL*Plus中执行查询语句的方式非常简单。

我们只需要输入查询语句,按下回车键,就可以得到查询结果。

Toad_使用简明手册

Toad_使用简明手册

一、Toad功能综述在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的。

Quest Software 为此提供了高效的Oracle应用开发工具-Toad(Tools of Oracle Application Developers)。

在Toad的新版本中,还加入了DBA模块,可以帮助DBA完成许多日常管理工作。

它最大的特点就是简单易用,访问速度快。

使用Toad,我们可以通过一个图形化的用户界面快速访问数据库,完成复杂的SQL和PL/SQL代码编辑和测试工作。

Toad由Oracle开发专家专门为开发人员而设计,是一个功能强大、结构紧凑的专业化PL/SQL开发环境。

Toad 主要具有如下特点:模式浏览:模式浏览功能可以让我们快速访问数据字典,浏览数据库中的表、索引、存储过程。

Toad 提供对数据库的快速访问,使用极为方便,用户界面简洁,结构安排合理。

当我们点击一个单独的数据库对象,Toad立即显示此对象的详细信息。

例如,当我们点一个数据库的表,所有和此表相关的索引、约束、存储过程、SQL语句以及和其他表的相互引用关系都在同一界面显示出来。

为了简化操作,用户可以在浏览窗口操作数据库对象。

SQL 编辑器:SQL 编辑器的主要功能是编辑、运行和调整SQL语句。

TOAD 的高级编辑窗口包括众多的特性来提高开发人员编写SQL语句的产品化程度。

例如,简单地生成代码模板,在编写SQL前自动发现包的内容和列的名字等等。

SQL编辑器包括一个编辑窗口和运行结果窗口,允许开发人员在编辑的过程中测试运行结果。

SQL编辑器中不仅包括标准的编辑命令,也包括一些增强的功能,如快速查询表中的字段、将SQL语句的内容格式化等等。

这个窗口可以处理大到4GB 的内容,对大的开发项目来说非常有用。

便捷的书签可以让开发人员非常容易地找到相关位置。

Oracle创建表语句(Createtable)语法详解及示例

Oracle创建表语句(Createtable)语法详解及示例

Oracle创建表语句(Createtable)语法详解及⽰例创建表(Create table)语法详解1. ORACLE常⽤的字段类型ORACLE常⽤的字段类型有VARCHAR2 (size) 可变长度的字符串, 必须规定长度CHAR(size) 固定长度的字符串, 不规定长度默认值为1NUMBER(p,s) 数字型p是位数总长度, s是⼩数的长度, 可存负数最长38位. 不够位时会四舍五⼊.DATE ⽇期和时间类型LOB 超长字符, 最⼤可达4GCLOB 超长⽂本字符串BLOB 超长⼆进制字符串BFILE 超长⼆进制字符串, 保存在外的⽂件⾥是只读的.数字字段类型位数及其四舍五⼊的结果原始数值1234567.89数字字段类型位数存储的值Number 1234567.89Number(8) 12345678Number(6) 错Number(9,1) 1234567.9Number(9,3) 错Number(7,2) 错Number(5,-2) 1234600Number(5,-4) 1230000Number(*,1) 1234567.92. 创建表时给字段加默认值和约束条件创建表时可以给字段加上默认值例如 : ⽇期字段 DEFAULT SYSDATE这样每次插⼊和修改时, 不⽤程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如: ⾮空 NOT NULL不允许重复 UNIQUE关键字 PRIMARY KEY按条件检查 CHECK (条件)外键 REFERENCES 表名(字段名)3. 创建表的例⼦CREATE TABLE DEPT(EPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,DNAME VARCHAR2(14),LOC VARCHAR2(13)) ;CREATE TABLE region(ID number(2) NOT NULL PRIMARY KEY,postcode number(6) default '0' NOT NULL,areaname varchar2(30) default ' ' NOT NULL);4. 创建表时的命名规则和注意事项1)表名和字段名的命名规则:必须以字母开头,可以含符号A-Z,a-z,0-9,_,$,#2)⼤⼩写不区分3)不⽤SQL⾥的保留字, ⼀定要⽤时可⽤双引号把字符串括起来.4)⽤和实体或属性相关的英⽂符号长度有⼀定的限制注意事项:1)建表时可以⽤中⽂的字段名, 但最好还是⽤英⽂的字段名2)创建表时要把较⼩的不为空的字段放在前⾯, 可能为空的字段放在后⾯3)建表时如果有唯⼀关键字或者唯⼀的约束条件,建表时⾃动建了索引4)⼀个表的最多字段个数也是有限制的,254个.5. 约束名的命名规则和语法约束名的命名规则约束名如果在建表的时候没有指明,系统命名规则是SYS_Cn(n是数字)约束名字符串的命名规则同于表和字段名的命名规则6. 使⽤约束时的注意事项约束⾥不能⽤系统函数,如SYSDATE和别的表的字段⽐较可以⽤本表内字段的⽐较想在事务处理后, 做约束的检查SQL> alter session set constraints deferred.7. 由实体关系图到创建表的例⼦ s_dept前提条件:已有region表且含唯⼀关键字的字段idSQL> CREATE TABLE s_dept(id NUMBER(7)CONSTRAINT s_dept_id_pk PRIMARY KEY,name VARCHAR2(25)CONSTRAINT s_dept_name_nn NOT NULL,region_id NUMBER(7)CONSTRAINT s_dept_region_id_fk REFERENCES region (id),CONSTRAINT s_dept_name_region_id_uk UNIQUE(name, region_id));8. 较复杂的创建表例⼦SQL> CREATE TABLE s_emp(id NUMBER(7)CONSTRAINT s_emp_id_pk PRIMARY KEY,last_name VARCHAR2(25)CONSTRAINT s_emp_last_name_nn NOT NULL,first_name VARCHAR2(25),userid VARCHAR2(8)CONSTRAINT s_emp_userid_nn NOT NULLCONSTRAINT s_emp_userid_uk UNIQUE,start_date DATE DEFAULT SYSDATE,comments VARCHAR2(25),manager_id NUMBER(7),title VARCHAR2(25),dept_id NUMBER(7)CONSTRAINT s_emp_dept_id_fk REFERENCES s_dept(id),salary NUMBER(11,2),commission_pct NUMBER(4,2)CONSTRAINT s_emp_commission_pct_ck CHECK(commission_pct IN(10,12.5,15,17.5,20)));8. 通过⼦查询建表通过⼦查询建表的例⼦SQL>CREATE TABLE emp_41 AS SELECT id, last_name, userid, start_dateFROM s_emp WHERE dept_id = 41;SQL> CREATE TABLE A as select * from B where 1=2;只要表的结构.10. ⽤⼦查询建表的注意事项1)可以关连多个表及⽤集合函数⽣成新表,注意选择出来的字段必须有合法的字段名称,且不能重复。

Rad工具使用说明

Rad工具使用说明

1 背景介绍 (2)1.1 Asura页面结构 (2)1.2 Rad工具布局 (2)2 单表实体示例 (3)2.1创建项目 (3)2.2创建模块 (8)2.3创建实体 (10)2.4 创建功能 (16)1 背景介绍1.1 Asura页面结构Asura架构中的基本页面布局如下:图1在上图中:项目:页面中就是访问的地址;模块:项目中包含模块,一个模块通常对应一个以及菜单(也可能不对应); 实体:与数据库中一个表对应的一个Java类;功能:对应模块下的一个具体菜单,通常对应一个或多个实体。

1.2 Rad工具布局Rad工具的基本布局如下:菜单栏区:包括项目、功能、工具、窗口、帮助等各种菜单命令;工具栏区:提供一些常用菜单的快捷方式。

主要有:新建项目、打开项目、保存、保存全部、新建模块、新建实体、新建功能、生成代码等;导航区:包括模块、项目、文件三种导航视图,分别浏览模块信息、项目配置和项目下的文件;主编辑区:用来查看、编辑各种配置信息;输出区:输出辅助的操作信息,说明相关操作执行的具体动作,便于用户监控。

图22 单表实体示例下面做一个单表的例子,使用户可以快速熟悉Rad工具的使用与操作。

2.1创建项目创建项目的过程如下:1、可以选工具栏上的“新建项目”图标(图3),也可以在菜单栏中选择“项目—>新建项目”(图4),还可以在导航面板中点右键菜单中的“新建项目”(图5)。

图3 图4 图52、之后你将看到“新建项目”的导航窗口,它将引导你一步一步创建自己的项目,首先,在第一页(图7),是项目的基本信息设置,你输入好相应的代码后,点击下一步。

需要输入的项有:项目代码:在Rad工具中显示的项目名(不能为中文)项目名称:项目的名称(可以为中文)项目描述:页面上方显示的项目信息,可简要说明项目的作用(最好为中文)如图6。

图6所在路径:默认为本工具目录下\workspace(可以点击浏览自己选择)图7本例代码:项目代码:testProject项目名称:测试项目项目描述:测试项目描述所在路径:默认路径3、第二页数据库设置,选好“数据库类型”后,“JDBC Driver”与“数据库连接串”会有初步的设置,你只需要修改连接串中的IP地址和ID即可,然后继续完成下面的设置。

oracle数据库创建表结构语句

oracle数据库创建表结构语句

文章标题:深度剖析Oracle数据库创建表结构语句1. 前言作为一名数据库工程师,我时常需要使用Oracle数据库来创建表结构。

我需要你帮助我撰写一篇关于Oracle数据库创建表结构语句的文章,以便我能够更深入地理解这一主题。

2. 了解Oracle数据库创建表结构语句在开始深度探讨Oracle数据库创建表结构语句之前,我们首先需要了解什么是表结构,以及为什么它在数据库中如此重要。

表结构是指表的字段和类型定义,它决定了表中可以存储的数据类型和数据限制。

在Oracle数据库中,创建表结构语句通常包括表名、字段名、数据类型以及约束条件等内容。

3. 表结构语句的基本语法在Oracle数据库中,常用的创建表结构语句的基本语法如下:CREATE TABLE table_name(column1 datatype,column2 datatype,column3 datatype,....);在上述语法中,CREATE TABLE是创建表的关键字,table_name是所要创建的表的名称,而column1、column2等则是表中的字段名称,datatype则是字段的数据类型。

4. 深入探讨数据类型和约束条件接下来,让我们深入了解Oracle数据库创建表结构语句中涉及的数据类型和约束条件。

Oracle数据库支持丰富的数据类型,包括数值型、字符型、日期型等。

而约束条件则可以用来保证数据的完整性和一致性,例如主键约束、外键约束、唯一约束和非空约束等。

在实际的数据库设计中,选择合适的数据类型和约束条件可以提高数据库的效率和数据的完整性,因此这一部分至关重要。

5. 个人观点和理解从我的实际经验来看,创建表结构是数据库设计中的关键一步。

良好的表结构设计可以为数据库的性能和数据完整性提供良好的保障,同时也为后续的数据操作和查询提供便利。

我在设计表结构时通常会慎重考虑每个字段的数据类型和约束条件,以确保数据库的稳定和可靠。

Oracle建表空间各种语句

Oracle建表空间各种语句

在创建用户之前,先要创建表空间:其格式为:格式: create tablespace 表间名 datafile '数据文件名' size 表空间大小;如:SQL> create tablespace news_tablespace datafile'F:\oracle\product\10.1.0\oradata\news\news_data.dbf' size 500M;其中'news_tablespace'是你自定义的表空间名称,可以任意取名;'F:\oracle\product\10.1.0\oradata\news\news_data.dbf'是数据文件的存放位置,'news_data.dbf'文件名也是任意取;'size 500M'是指定该数据文件的大小,也就是表空间的大小。

现在建好了名为'news_tablespace'的表空间,下面就可以创建用户了:其格式为:格式: create user 用户名 identified by 密码 default tablespace 表空间表;如:SQL> create user news identified by news default tablespace news_tablespace;默认表空间'default tablespace'使用上面创建的表空间。

接着授权给新建的用户:SQL> grant connect,resource to news; --表示把 connect,resource权限授予news用户SQL> grant dba to news; --表示把 dba权限授予给news用户授权成功。

ok! 数据库用户创建完成,现在你就可以使用该用户创建数据表了!1.建表空间create tablespace hoteldata datafile'D:\java\Oracle\product\10.1.0\oradata\zznorcl\hoteldata.dbf'size200m autoextend on next 10m maxsize unlimited;2.建用户create user hotel identified by hotel default tablespace hoteldata account unlock;//identified by 后面的是密码,前面的是用户名3.用户授权grant resource,connect,RECOVERY_CATALOG_OWNER to hotel ;grant create table to hotel;alter user hotel quota unlimited ON OSDB;alter user hotel default tablespace hoteldata;4.删除表空间DROP TABLESPACE hoteldata INCLUDING CONTENTS AND DATAFILES;5.删除用户DROP USER hotel CASCADE6.删除表的注意事项在删除一个表中的全部数据时,须使用TRUNCATE TABLE 表名;因为用DROP TABLE,DELETE * FROM 表名时,TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。

RDLC使用手册V1

RDLC使用手册V1

使用RDLC报表(一)1 建立数据源启动VS2008新建一个窗体项目,命名为TestProj在左边的窗体内选择“添加新数据源”或在菜单上操作“添加新数据源”:选择后出现对话窗体,选择“数据库”,进入“下一步”:本数据源以SqlServer2000所提供的Northwind数据库为例,因此在数据库内选择驱动程序为SqlServer,具体操作视所用数据库而定(如果连接为Oracle,建议用Oracle所提供的ODP for .NET,地址:/technology/global/cn/software/tech/windows/odpnet/index.html)。

选择数据源后,指定数据库文件,并进行测试,如果连接不通,请检查你的软件设置。

进行下一步,至显示出库文件内的表及视图,然后打开表,并选择其中的Employees,选择完成。

在数据源窗口中显示出所选择表及表内的字段,以备使用。

同时在资源管理器中,也可以看到新增加的数据文件。

2 报表浏览器在新建的窗体内,放入报表浏览控件:此报表浏览控件集成了报表查看及打印预览的功能,可直接输出至打印机,也可直接输出至Excel文件或PDF文件,对于喜欢看Excel表格的客户来说,这个报表控件非常不错。

关于此报表的来源及台前幕后的各种说法,请自己查询相关的网站。

3 建立报表文件选中报表浏览器控件后,在控件的右上角会出现一个小三角,点击后,出现一个菜单,选择“设计新报表”或在解决方案资源管理器中添加一个新的报表文件:双击“报表项”内的“表”,则设计空白表内生成一个表格,我们可以在表格内添加数据项。

此报表的设计方式类似于MS以前的VB下报表设计环境。

在报表设计器中,我将一份报表分为五个部分,从上至下为:报表标题区、列标题区、数据显示区、合计及页脚。

如果将报表的设计形式显示出页眉及页脚,报表的形式会看得更清楚些:选择页眉及页脚:显示结果:现在开始设计报表:在“页眉”区内放入一个文本框,将内容更改为“测试报表”,居中,字体放大加粗:从数据源窗口中选择合适的列,用鼠标拖到报表内的“详细信息”表格上,数据会自动填入:将设计的报表保存后,返回报表浏览窗口,并为报表浏览器选择我们设计的报表:选中报表文件后,菜单也有所改变:再为此报表文件指定数据源,选择数据源:确定,保存文件并运行测试文件。

oracle 建表 语句

oracle 建表 语句

当使用Oracle数据库时,可以使用SQL语句来创建表。

以下是一个示例的Oracle建表语句:
sql复制代码
CREATE TABLE表名 (
列1数据类型 [约束],
列2数据类型 [约束],
...
);
在上面的语句中,你需要将"表名"替换为你想要创建的表的名称。

然后,你可以定义表中的列和它们的数据类型。

每列可以有可选的约束条件,如主键、唯一性约束等。

以下是一个具体的示例,创建一个名为"employees"的表,其中包含id、name和salary列:
sql复制代码
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR2(50),
salary NUMBER(10, 2)
);
在上面的示例中,我们创建了一个名为"employees"的表,其中包含三列:id、name和salary。

id列是整数类型,并设置为主键。

name列是VARCHAR2类型,最大长度为50个字符。

salary列是NUMBER类型,总共允许10位数字,其中2位是小数部分。

oracle数据库自动生成数据库表结构文档(亲测有效)

oracle数据库自动生成数据库表结构文档(亲测有效)

oracle数据库⾃动⽣成数据库表结构⽂档(亲测有效)1 23import java.awt.Color;4import java.io.FileOutputStream;5import java.sql.Connection;6import java.sql.DriverManager;7import java.sql.ResultSet;8import java.sql.SQLException;9import java.sql.Statement;10import java.util.ArrayList;11import java.util.HashMap;12import java.util.Iterator;13import java.util.List;14import java.util.Map;1516import com.lowagie.text.*;17import com.lowagie.text.rtf.RtfWriter2;18/**19 * 数据库⽂档⽣成器 Oracle版20 * itext-2.1.7.jar21 * itext-rtf-2.1.7.jar22 * @author cuiyj23 *24*/25public class GenerateTableDoc {26//键类型字典27private static Map<String,String> keyType = new HashMap<String,String>();28//需要导出的⽬标表29private static List<String> targetTable = new ArrayList<String>();30static{31 targetTable.add("COMMON_ADDRESS");//表名32 targetTable.add("L_USER");33 }34//初始化jdbc35static{36try {37 keyType.put("ID", "主键");38// keyType.put("C", "Check");39 Class.forName("oracle.jdbc.OracleDriver");40 } catch (ClassNotFoundException e) {41 e.printStackTrace();42 }43 }44//private static String url = "";//链接url45private static String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";//链接url46private static String username = "user"; //⽤户名.需要设置默认表空间哈47private static String password = "user"; //密码48private static String schema = "USER"; //⽬标数据库名49//查询所有表的sql语句50private static String sql_get_all_tables = "select a.TABLE_NAME,MENTS from user_tables a,user_tab_comments b WHERE a.TABLE_NAME=b.TABLE_NAME order by TABLE_NAME"; //查询所有字段的sql语句51private static String sql_get_all_columns = "select T1.column_name,T1.data_type,T1.data_length,ments,T1.NULLABLE,(select max(constraint_type) from user_constraints x left join user_cons_columns y on x.constraint_name=y 52public static void main(String[] args) throws Exception {53//初始化word⽂档54 Document document = new Document(PageSize.A4);55 RtfWriter2.getInstance(document,new FileOutputStream("E:/word.doc"));56 document.open();57//查询开始58 Connection conn = getConnection();59//获取所有表60 List tables = getDataBySQL(sql_get_all_tables,conn);61int i=1;62for (Iterator iterator = tables.iterator(); iterator.hasNext();) {63 String [] arr = (String []) iterator.next();64//循环获取字段信息65 String tableName = arr[0];66if(targetTable.contains(tableName)){67 System.out.print(i+".正在处理数据表-----------"+arr[0]);68 addTableMetaData(document,arr,i);69 List columns = getDataBySQL(sql_get_all_columns.replace("{table_name}", arr[0]),conn);70 addTableDetail(document,columns);71 addBlank(document);72 System.out.println("...done");73 i++;74 }75 }76 document.close();77 conn.close();78 }79/**80 * 添加⼀个空⾏81 * @param document82 * @throws Exception83*/84public static void addBlank(Document document)throws Exception{85 Paragraph ph = new Paragraph("");86 ph.setAlignment(Paragraph.ALIGN_LEFT);87 document.add(ph);88 }89/**90 * 添加包含字段详细信息的表格91 * @param document92 * @param arr193 * @param columns94 * @throws Exception95*/96public static void addTableDetail(Document document,List columns)throws Exception{97 Table table = new Table(6);98 table.setWidth(100f);99 table.setBorderWidth(1);100 table.setBorderColor(Color.BLACK);101 table.setPadding(0);102 table.setSpacing(0);103 Cell cell1 = new Cell("序号");// 单元格104 cell1.setHeader(true);105106 Cell cell2 = new Cell("列名");// 单元格107 cell2.setHeader(true);108109 Cell cell3 = new Cell("类型");// 单元格110 cell3.setHeader(true);111112 Cell cell4 = new Cell("长度");// 单元格113 cell4.setHeader(true);114115 Cell cell5 = new Cell("键");// 单元格116 cell5.setHeader(true);117118 Cell cell6 = new Cell("说明");// 单元格119 cell6.setHeader(true);120//设置表头格式121 table.setWidths(new float[]{8f,30f,15f,8f,10f,29f});122 cell1.setHorizontalAlignment(Cell.ALIGN_CENTER);123 cell1.setBackgroundColor(Color.gray);124 cell2.setHorizontalAlignment(Cell.ALIGN_CENTER);125 cell2.setBackgroundColor(Color.gray);126 cell3.setHorizontalAlignment(Cell.ALIGN_CENTER);127 cell3.setBackgroundColor(Color.gray);128 cell4.setHorizontalAlignment(Cell.ALIGN_CENTER);129 cell4.setBackgroundColor(Color.gray);130 cell5.setHorizontalAlignment(Cell.ALIGN_CENTER);131 cell5.setBackgroundColor(Color.gray);132 cell6.setHorizontalAlignment(Cell.ALIGN_CENTER);133 cell6.setBackgroundColor(Color.gray);134 table.addCell(cell1);135 table.addCell(cell2);136 table.addCell(cell3);137 table.addCell(cell4);138 table.addCell(cell5);139 table.addCell(cell6);140 table.endHeaders();// 表头结束141int x = 1;142for (Iterator iterator = columns.iterator(); iterator.hasNext();) {143 String [] arr2 = (String []) iterator.next();144 Cell c1 = new Cell(x+"");145 Cell c2 = new Cell(arr2[0]);146 Cell c3 = new Cell(arr2[1]);147 Cell c4 = new Cell(arr2[2]);148149 String key = keyType.get(arr2[5]);150if(key==null)key = "";151 Cell c5 = new Cell(key);152 Cell c6 = new Cell(arr2[3]);153 c1.setHorizontalAlignment(Cell.ALIGN_CENTER);154 c2.setHorizontalAlignment(Cell.ALIGN_CENTER);155 c3.setHorizontalAlignment(Cell.ALIGN_CENTER);156 c4.setHorizontalAlignment(Cell.ALIGN_CENTER);157 c5.setHorizontalAlignment(Cell.ALIGN_CENTER);158 c6.setHorizontalAlignment(Cell.ALIGN_CENTER);159 table.addCell(c1);160 table.addCell(c2);161 table.addCell(c3);162 table.addCell(c4);163 table.addCell(c5);164 table.addCell(c6);165 x++;166 }167 document.add(table);168 }169/**170 * 增加表概要信息171 * @param dcument172 * @param arr173 * @param i174 * @throws Exception175*/176public static void addTableMetaData(Document dcument,String [] arr,int i) throws Exception{ 177 Paragraph ph = new Paragraph(i+". 表名: "+arr[0]+" 说明: "+(arr[1]==null?"":arr[1])); 178 ph.setAlignment(Paragraph.ALIGN_LEFT);179 dcument.add(ph);180 }181/**182 * 把SQL语句查询出列表183 * @param sql184 * @param conn185 * @return186*/187public static List getDataBySQL(String sql,Connection conn){188 Statement stmt = null;189 ResultSet rs = null;190 List list = new ArrayList();191try {192 stmt = conn.createStatement();193 rs = stmt.executeQuery(sql);194while(rs.next()){195 String [] arr = new String[rs.getMetaData().getColumnCount()];196for(int i=0;i<arr.length;i++){197 arr[i] = rs.getString(i+1);198 }199 list.add(arr);200 }201 } catch (SQLException e) {202 e.printStackTrace();203 }finally{204try {205if(rs!=null)rs.close();206if(stmt!=null)stmt.close();207 } catch (SQLException e) {208 e.printStackTrace();209 }210 }211return list;212 }213/**214 * 获取数据库连接215 * @return216*/217public static Connection getConnection(){218try {219return DriverManager.getConnection(url, username, password);220 } catch (SQLException e) {221 e.printStackTrace();222 }223return null;224 }225 }1 ------ 这是相关依赖2<dependency>3<groupId>com.lowagie</groupId>4<artifactId>itext</artifactId>5<version>2.1.7</version>6</dependency>7<dependency>8<groupId>com.lowagie</groupId>9<artifactId>itext-rtf</artifactId>10<version>2.1.7</version>11</dependency>。

自动生成数据库文档springboot+screw

自动生成数据库文档springboot+screw

⾃动⽣成数据库⽂档springboot+screw闲来⽆事的周六,被 芳放了鸽⼦,只好蹲在被窝⾥研究会技术,安慰下⾃⼰受伤的⼼灵。

鸽⼦相信胖友们都⼿写过数据库表结构⽂档,⼀通⽆脑的 CV ⼤法之后,⼩⼏⼗页的 Word ⽂档就出炉了。

那么有没什么⼯具,可以帮我们偷懒⾼效的⾃动⽣成数据库表结构⽂档呢?有,通过使⽤ screw ⽣成⼯具。

screw 是⼀个简洁好⽤的数据库表结构⽂档的⽣成⼯具,⽀持 MySQL、Oracle、PostgreSQL 等主流的关系数据库。

⽣成的⽂档有 HTML、Word、Markdown 三种格式,⽰例如下图所⽰:格式图HTMLWordMarkdownscrew 有两种⽅式来⽣成⽂档,通过 Java 代码或者 Maven 插件。

下⾯,我们来分别快速⼊门下。

创建lab-70-db-doc-screw-01⽰例项⽬,使⽤ screw 的 Java 代码的⽅式,⽣成⽂档。

⽰例⽰例在pom.xml⽂件中,引⼊ screw 的依赖screw-core。

<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><parent><artifactId>lab-70-db-doc</artifactId><groupId>bs</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>lab-70-db-doc-screw-01</artifactId><dependencies><!-- screw 库,简洁好⽤的数据库表结构⽂档⽣成器 --><dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.5</version></dependency><!-- 数据库连接 --><dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>3.4.5</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.22</version></dependency></dependencies></project>依赖HikariCP和mysql-connector-java是为了连接 MySQL 数据库。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
v_Count int;
v_MaxCount int;
type DynamicCursor is ref cursor;
c_Condition DynamicCursor;
outf utl_file.file_type;
begin
begin
utl_file.fremove('CREATE_TABLE_DDL',v_FileName||'.sql');
''NUMBER'',
decode(DATA_PRECISION,
null,
'' '',
''(''||to_char(DATA_PRECISION)||'',''||to_char(DATA_SCALE)||'')''))
v_DBlink varchar2,
v_Condition varchar2,
v_FileName varchar2,
v_Prefix varchar2,
v_Suffix varchar2
)
as
v_TableName varchar2(32);
v_DataLine varchar2(1024);
exception when others then null;
end;
open c_Condition for v_Condition;
loop
v_Count := 1;
fetch c_Condition into v_TableName;
exit when c_Condition%notfound;
--** create or replace directory CREATE_TABLE_DDL as 'C:\app\userdatabackup\portal\table_ddl'; **
--** grant read, write on directory CREATE_TABLE_DDL to portal; **
||decode(COLUMN_ID,
:v_MaxCount,
'')compress for direct_load operations nologging;'',
'','')
from USER_TAB_COLUMNS'||v_DBlink
||' where TABLE_NAME = :v_TableName
--** **
/***************************************************************************************************/
create or replace procedure SP_CREATE_TABLE_DDL(
'CREATE_TABLE_DDL',
'ODS_',
'_'||to_char(sysdate,'yyyymmdd')
);
*/
loop
execute immediate
'select decode(COLUMN_ID,
1,
''create table ''||:v_Prefix||TABLE_NAME||:v_Suffix||''('')
||COLUMN_NAME
||'' ''
/***************************************************************************************************/
--** **
--** 自动生成建表SQL文件存储过程 : SP_CREATE_TABLE_DDL **
utl_file.put_line(outf,v_DataLine);
utl_file.fclose(outf);
end loop;
end loop;
end;
/*
call SP_CREATE_TABLE_DDL(
'',
'select OBJECT_NAME from USER_OBJECTS where substr(OBJECT_NAME,1,3) = ''DP_''',
execute immediate
'select max(COLUMN_ID) from USER_TAB_COLUMNS'
||v_DBlink
||' where TABLE_NAME = '''
||v_TableName
||''''
into v_MaxCount;
while v_Count <= v_MaxCount
--** v_Condition : 一个select查询条件,查出的是一条或者多条单列记录,该记录应为表名称 **
--** (请注意):该select语句内若出现单引号,则须在每个单引号之前再加一个单引号 **
--** v_Prefix : _ID = :v_Count'
into v_DataLine
using v_Prefix, v_Suffix, v_MaxCount, v_TableName, v_Count;
v_Count := v_Count + 1;
outf := utl_file.fopen('CREATE_TABLE_DDL',v_FileName||'.sql','a');
--** v_Suffix : 预设导出文件名称的后缀(不是文件类型,类型已经默认为.ctl) **
--** **
--** 首先以dba或者是其他具有 create directory 的用户创建 directory,然后授权: **
||DATA_TYPE
||decode(DATA_TYPE,
''VARCHAR2'',
''(''||to_char(DATA_LENGTH)||'')'',
''CHAR'',
''(''||to_char(DATA_LENGTH)||'')'',
相关文档
最新文档