- 浏览: 673997 次
- 性别:
- 来自: 太原
文章分类
最新评论
-
65018149:
你是吴江农商行的?
大额支付系统 -
txy821:
WebSphere MQ 学习笔记(3) - 远程管理 -
202013:
...
HTML 标签自定义属性 -
zhoulei984623:
那如果是OPENSUSE呢? 好像不能直接安装JAVAHL 是 ...
linux下通过eclipse使用SVN -
luzitian:
赞,太棒了!
Sun公司网站上的Swing实例,想学Swing的不看后悔
--经常在用,感觉还不错。在数据移植的时候,配上BCP,那可是非常的方便
if exists(select 1 from sysobjects where name = 'sp_gent' and type = 'P') drop procedure sp_gent go create procedure sp_gent @tblname varchar(30) = null, @prechar varchar(4) = null, --$:no print @table_dll varchar(16384) = null out, @dbname varchar(32) = null, @droptg char(1) = '1', @prxytx varchar(255) = null, @replace varchar(20) = null, @tabtype varchar(1) = 'A', --A:所有表;P:代理表;U:用户表 @indextg varchar(3) = 'TPI', --T:纯表;P:主键;I:纯索引;J:除主键外的纯索引(和TP使用与I相同,和I同时使用I失效) @table_seg varchar(32) = null, @index_seg varchar(32) = null as begin set nocount on if @tblname is null begin declare @c_tblname varchar(30) declare cur_1 cursor for select name from sysobjects where type = 'U' order by name open cur_1 fetch cur_1 into @c_tblname while @@sqlstatus = 0 begin exec sp_gent @tblname = @c_tblname, @prechar = @prechar, @dbname = @dbname , @droptg = @droptg , @prxytx = @prxytx , @replace = @replace, @tabtype = @tabtype, --A:所有表;P:代理表;U:用户表 @indextg = @indextg, --A:表和索引;T:纯表;I:纯索引 @table_seg = @table_seg, @index_seg = @index_seg fetch cur_1 into @c_tblname end close cur_1 deallocate cursor cur_1 return end declare @obj_id int declare @sysstat2 int declare @username varchar(30) select @obj_id = id, @sysstat2 = sysstat2 ,@username = user_name(uid) from sysobjects where name = @tblname and type = 'U' if @@rowcount <> 1 begin print 'table %1! not exists', @tblname goto err end if @sysstat2 & 1024 = 1024 begin if upper(@tabtype) in ('U') goto ok end else begin if upper(@tabtype) in ('P') goto ok end declare @colname varchar(30) --列名 declare @typename varchar(30) --类型名称 declare @usertype smallint --类型ID declare @length int --长度 declare @prec tinyint --有效位数 declare @scale tinyint --精度 declare @def_id int --默认值id declare @nulls tinyint --空值 declare @ident tinyint --标识列 declare @index_dll varchar(16384) declare @def_text varchar(100) declare @ide_text varchar(30) declare @nul_text varchar(30) declare @cns_text varchar(500) declare @uni_pri varchar(40), @non_clu varchar(40), @non_uni varchar(40) declare @lock_scheme varchar(100) declare @keys varchar(500), @i int declare @thiskey varchar(30) declare @sorder char(4) select @keys = "", @i = 1 declare @cns_name varchar(30), @status int, @indid int declare @idx_name varchar(50) declare @CRNW varchar(2) --回车换行 declare @TAB char(1) select @CRNW = convert(varchar(2), 0x0d0a) select @TAB = convert(char(1), 0x09) declare @dbname_dot varchar(35) if ltrim(@dbname) is null select @dbname = null,@dbname_dot = null else select @dbname = @dbname + '.',@dbname_dot = @dbname + '..' declare @table_name varchar(30) select @table_name = case when ltrim(@replace) is not null then @replace else @tblname end declare @prefix_table varchar(2) select @prefix_table = case when ltrim(@prxytx) is not null then 'r_' else null end if charindex('T',@indextg) > 0 begin if @droptg <> '0' select @table_dll = "if exists(select 1 from "+@dbname_dot +"sysobjects where name = '"+@prefix_table +@table_name+"' and type = 'U')" +@CRNW+@TAB+'drop table '+@dbname+@username + '.' +@prefix_table +@table_name+@CRNW +case when @sysstat2 & 1024 = 1024 then @TAB+'exec sp_dropobjectdef '+@table_name+@CRNW when ltrim(@prxytx) is not null then @TAB+'exec sp_dropobjectdef r_'+@table_name+@CRNW else null end +'go'+@CRNW else select @table_dll = null if @sysstat2 & 1024 = 1024 begin declare @OS_file varchar(255) select @OS_file = char_value from sysattributes where class = 9 and attribute = 1 and object_cinfo = @tblname if @@rowcount = 0 begin print '取代理表前缀失败%1!', @tblname goto err end select @table_dll = @table_dll+"exec sp_addobjectdef " +@table_name +", '"+@OS_file+"', 'table'"+@CRNW+ "create existing table " + @dbname+@username + "." +@table_name + " (" end else if ltrim(@prxytx) is not null select @table_dll = @table_dll+"exec sp_addobjectdef r_" +@table_name+", '"+@prxytx +@table_name+"', 'table'"+@CRNW +"create existing table " + @dbname+@username + ".r_" +@table_name + " (" else select @table_dll = @table_dll+'create table ' + @dbname+@username + '.' +@table_name + ' (' --如果在sybsystemprocs数据库下提交,以下注释掉 declare @tablna varchar(255) --select @tablna = tablna from knp_tabl where tablcd = @tblname --if @@rowcount = 0 select @tablna = null if ltrim(@tablna) is not null select @table_dll = @table_dll + ' --'+@tablna select @prechar = case when @prechar is not null then left(@prechar+space(4),4) else @prechar end if @prechar <> '$' begin if @prechar is not null begin declare @temp_dll varchar(16384),@print_dll varchar(16384) select @temp_dll = @table_dll select @temp_dll = @prechar + @temp_dll while charindex(@CRNW,@temp_dll) > 0 and char_length(@temp_dll) <> charindex(@CRNW,@temp_dll)+1 begin select @print_dll = @print_dll + left(@temp_dll,charindex(@CRNW,@temp_dll) - 1) + @CRNW+@prechar select @temp_dll = substring(@temp_dll,charindex(@CRNW,@temp_dll)+char_length(@CRNW),char_length(@temp_dll)) end select @print_dll = @print_dll + @temp_dll print '%1!',@print_dll end else print '%1!',@table_dll end select @table_dll = @table_dll + @CRNW if ltrim(@table_seg) is null begin select @table_seg = s.name from sysobjects o, syssegments s, sysindexes i where o.id = object_id(@tblname) and i.id = o.id and i.indid < 2 and i.segment = s.segment if @@rowcount = 0 begin print '表%1!所在的段不存在',@tblname goto err end end end --确定表是否有完整性约束 declare @have_con char(1) if exists (select 1 from sysindexes where id = @obj_id and status2 & 2 = 2 ) and (ltrim(@prxytx) is null or @sysstat2 & 1024 = 1024) select @have_con = '1' else select @have_con = '0' if charindex('T',@indextg) > 0 begin declare @col_int int select @col_int = count(*) from syscolumns where id = @obj_id declare cur_col cursor for select b.name, b.usertype, c.name , b.length, b.prec, b.scale, b.cdefault, convert(bit,b.status&8) as Nulls, convert(bit,b.status&128) as Ident from sysobjects a, syscolumns b, systypes c where a.name = @tblname and a.type = 'U' and a.id = b.id and b.usertype = c.usertype order by b.colid open cur_col fetch cur_col into @colname, @usertype, @typename, @length, @prec, @scale, @def_id, @nulls, @ident while @@sqlstatus = 0 begin --系统定义的数据类型 if @usertype < 100 begin if rtrim(@typename) in ('char','varchar','nchar','nvarchar') select @typename = @typename + '('+ convert(varchar,@length) +')' else if @typename in ('numeric','decimal') select @typename = @typename + '(' + convert(varchar,@prec) + ',' + convert(varchar,@scale) + ')' else if @typename in ('float','double') select @typename = @typename + '(' + convert(varchar,@prec) + ')' else if @typename in ('binary','varbinary') select @typename = @typename + '(' + convert(varchar,@length) + ')' end select @ide_text = case @ident when 1 then 'identity' else null end select @nul_text = case @nulls when 1 then ' null' else 'not null' end if @def_id > 0 begin select @def_text = ltrim(rtrim(b.text)) from sysobjects a, syscomments b where a.id = @def_id and a.id = b.id if @@rowcount <> 1 begin print '取default失败%1!', @def_id goto err end while charindex(@TAB,@def_text) > 0 select @def_text = stuff(@def_text,charindex(@TAB,@def_text),char_length(@TAB),' ') while charindex(' ',@def_text) > 0 select @def_text = stuff(@def_text,charindex(' ',@def_text),char_length(' '),' ') select @def_text = rtrim(ltrim(@def_text)) end else select @def_text = null declare @thiscol varchar(500) select @thiscol = case when char_length(@colname) <= 10 then left(@colname+space(10),10) else @colname end + ' ' + case when char_length(@typename) <= 15 then left(@typename+space(15),15) else @typename end + ' ' + @def_text + ' ' + @ide_text + ' ' + @nul_text if @i = @col_int and (@have_con = '0' or charindex('P',@indextg) <= 0) select @thiscol = @thiscol + ' ' else select @thiscol = @thiscol + ' ,' --如果在sybsystemprocs数据库下提交,以下注释掉 declare @colmna varchar(255) select @colmna = null --select @colmna = colmna from knp_colm where tablcd = @tblname and colmcd = @colname if ltrim(@colmna) is not null select @thiscol = @thiscol + ' --'+@colmna if @prechar <> '$' print '%1!%2!',@prechar, @thiscol select @table_dll = @table_dll + @thiscol + @CRNW select @i = @i + 1 fetch cur_col into @colname, @usertype, @typename, @length, @prec, @scale, @def_id, @nulls, @ident end end if @have_con = '1' and charindex('P',@indextg) > 0 begin select @cns_name = name, @status = status, @indid = indid from sysindexes where id = @obj_id and status2 & 2 = 2 --print 'exist constraint... status = %1!', @status if @indid = 1 select @non_clu = 'clustered' else if @indid > 1 begin if @status & 16 = 16 select @non_clu = 'clustered' else select @non_clu = 'nonclustered' end if @status & 2048 = 2048 select @uni_pri = 'primary key' else select @uni_pri = 'unique' select @cns_text = 'constraint ' + @cns_name + ' ' + @uni_pri + ' ' + @non_clu select @i = 1, @keys = '' select @thiskey = index_col(@tblname, @indid, @i) while @thiskey <> null begin if @i > 1 begin select @keys = @keys + ", " end if ltrim(@keys) is null select @keys = @thiskey else select @keys = @keys + @thiskey select @sorder = index_colorder(@tblname, @indid, @i) if (@sorder = "DESC") select @keys = @keys + " " + @sorder select @i = @i + 1 select @thiskey = index_col(@tblname, @indid, @i) end select @cns_text = @cns_text + ' (' + @keys + ')' if ltrim(@table_seg) is null begin select @table_seg = s.name from sysobjects o, syssegments s, sysindexes i where o.id = object_id(@tblname) and i.id = o.id and i.indid < 2 and i.segment = s.segment if @@rowcount = 0 begin print '表%1!所在的段不存在',@tblname goto err end end if charindex('T',@indextg) <= 0 select @cns_text = 'alter table '+@dbname+@username + '.'+@table_name+' add '+@cns_text+ " on '" + @table_seg + "'" if @prechar <> '$' print '%1!%2!',@prechar,@cns_text select @table_dll = @table_dll + @cns_text end if charindex('T',@indextg) > 0 begin if @prechar <> '$' print '%1!%2!',@prechar, ') ' select @table_dll = left(@table_dll,char_length(@table_dll)-1) + @CRNW + ')' --表锁计划 if @sysstat2 & 8192 = 8192 select @lock_scheme = 'lock allpages' else if @sysstat2 & 16384 = 16384 select @lock_scheme = 'lock datapages' else if @sysstat2 & 32768 = 32768 select @lock_scheme = 'lock datarows' select @table_dll = @table_dll + @CRNW + @lock_scheme if @prechar <> '$' print '%1!%2!',@prechar, @lock_scheme select @table_seg = "on '"+ @table_seg+"'" select @table_dll = @table_dll + @CRNW + @table_seg + @CRNW+'go'+@CRNW if @prechar <> '$' begin print '%1!%2!',@prechar, @table_seg print '%1!go',@prechar end end if ltrim(@prxytx) is not null or @sysstat2 & 1024 = 1024 goto ok if charindex('T',@indextg) > 0 begin declare @part_num int,@partition varchar(255) select @part_num = count(*) from syspartitions where id = object_id(@tblname) if @part_num <> 0 begin select @partition = 'alter table '+ @username + '.' + @table_name + ' partition '+convert(varchar,@part_num) select @table_dll = @table_dll + @CRNW + @partition if @prechar <> '$' print '%1!%2!',@prechar, @partition end end --select @table_dll as table_dll ------------------------------------------------------------------------------------- --检查其他索引 declare @idx_seg varchar(32) if charindex('I',@indextg) > 0 or charindex('J',@indextg) > 0 begin if exists (select 1 from sysindexes where id = @obj_id and indid <> 0 and (status2 & 2 <> 2 or charindex('P',@indextg) <= 0 and charindex('J',@indextg) <= 0)) begin declare cur_idx cursor for select name, indid, status from sysindexes where id = @obj_id and indid <> 0 and (status2 & 2 <> 2 or charindex('P',@indextg) <= 0 and charindex('J',@indextg) <= 0) -- (status2 & 2 <> 2 or charindex('P',@indextg) <= 0) open cur_idx fetch cur_idx into @idx_name, @indid, @status while @@sqlstatus = 0 begin if @indid = 1 select @non_clu = 'clustered' else if @indid > 1 begin if @status & 16 = 16 select @non_clu = 'clustered' else select @non_clu = 'nonclustered' end if @status & 2 = 2 select @non_uni = 'unique ' else select @non_uni = null select @i = 1,@keys = '' select @thiskey = index_col(@tblname, @indid, @i) while @thiskey <> null begin if @i > 1 begin select @keys = @keys + ", " end if ltrim(@keys) is null select @keys = @thiskey else select @keys = @keys + @thiskey select @sorder = index_colorder(@tblname, @indid, @i) if @sorder = "DESC" select @keys = @keys + " " + @sorder select @i = @i + 1 select @thiskey = index_col(@tblname, @indid, @i) end if ltrim(@index_seg) is null begin select @idx_seg = s.name from syssegments s, sysindexes i where s.segment = i.segment and i.id = object_id(@tblname) and i.indid = @indid if @@rowcount = 0 begin print '索引%1!所在的段不存在',@idx_name goto err end end else select @idx_seg = @index_seg if ltrim(@keys) is not null begin declare @thisidx varchar(500) select @thisidx = 'create ' + @non_uni + @non_clu + ' index ' + @idx_name + ' on ' + @dbname + @username + '.' + @table_name + "(" + @keys + ") on '" +@idx_seg+"'" select @index_dll = @index_dll + @thisidx + @CRNW if @prechar <> '$' print '%1!%2!',@prechar, @thisidx end fetch cur_idx into @idx_name, @indid, @status end if ltrim(@index_dll) is not null begin if @droptg <> '0' begin select @index_dll = @index_dll + 'go' + @CRNW if @prechar <> '$' print '%1!go',@prechar end end select @table_dll = @table_dll + @CRNW + @index_dll end end ok: set nocount off return 0 err: set nocount off return -1 end go
相关推荐
`java`在这里扮演了工具开发的角色,开发者可以利用Java的强类型和丰富的库来构建一个自动化脚本,遍历所有表并生成建表语句。DbGenSqlUtil很可能是一个Java工具类,用于处理这个任务。它可能包含了连接数据库、执行...
在SYBASE中用于生当前数据库中所有表的建表语句的过程。 在系统备份的加上BCP,那是相当的好。
标题中的“sybase导出建表SQL工具”指的是一个专门针对Sybase数据库系统的应用程序,它的主要功能是帮助用户方便地导出数据库中的表结构定义,即建表SQL语句。在数据库管理中,建表SQL语句是创建数据库表结构的关键...
以下是一个示例脚本,用于遍历当前模型中的所有表格、字段和视图,并将其名称设置为备注: ```vbscript Option Explicit ValidationMode = True InteractiveMode = im_Batch Dim mdl ' 当前模型 mdl = ...
- **实时分析**:能够在交易过程中实时分析数据,为企业决策提供即时支持。 - **统一平台**:将数据仓库、数据湖和应用程序服务器功能集成到一个平台上。 - **广泛的应用集成**:支持多种SAP应用及第三方应用程序的...
### PowerDesigner基础知识与实践应用详解 #### 一、PowerDesigner简介...在实际应用过程中,应当注意遵循最佳实践,比如在建表语句中避免不必要的双引号使用,以及充分利用PowerDesigner提供的正向和反向工程等功能。
在 Oracle 数据库设计过程中,合理地规划和使用表空间对于提高数据库性能、优化磁盘空间使用率至关重要。例如,可以将经常访问的数据放在高性能磁盘上的表空间中,而将不常用的数据存放在较低性能的磁盘上,以此来...
- **Copy出建表SQL**:通过SQL语句复制表的结构,创建新的表定义。 - **使用PowerDesigner反向工程导出SQL**:PowerDesigner是一款强大的数据库设计工具,可帮助用户从现有数据库中生成建模脚本,便于在新环境中...
PowerDesigner12.5 直接从 DB 中导出 pdm 文件 PowerDesigner12.5 是一款功能强大且广泛应用的...使用 PowerDesigner12.5 直接从 DB 中导出 pdm 文件可以快速、方便地生成数据库结构图,并简化数据库设计和管理过程。
根据EXCEL中的表结构,生成建表语句SQL文。 6。多用户使用该软件时,可以随时记录某个用户对数据库的操作。 7。可以为进行压力测试,自动生成数据。 8。导出表结构,根据表结构和数据库中的表结构进行差分。 9。...
解决 Oracle 生成的 SQL 创建语句中的双引号问题 在使用 PowerDesigner 导出 Oracle 数据库的建表 SQL 时,默认情况下,PowerDesigner 会为表名和字段名添加双引号,这可能会给数据库操作带来不便。要解决这个问题...
在生成建表脚本时,可以选择不进行检查,或者修改 C:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\DBMS 中的设置。 本文总结了 PowerDesigner 的一些常用设置和技巧,希望能够帮助读者更好地使用 ...
通过对Sybase ASE15中的系统参数配置、数据库设计及查询计划的深入了解与优化,可以显著提升数据库的运行效率和响应速度。这些技术不仅限于Sybase ASE15,很多原则也适用于其他数据库管理系统。实践中应综合考虑各种...
在一个SELECT 语句中使用多个表119 正确地找到列123 等值联合124 不等值联合129 外部联合与内部联合130 表的自我联合132 总结134 问与答134 校练场134 练习135 第七天子查询内嵌的SQL 子句136 目标136 建立一个子...
PowerDesigner从最初的单一数据库设计工具演化为一个全方位的建模工具软件,涵盖了管理信息系统设计的全过程,包括数据流程图、概念数据模型、物理数据模型的制作,以及生成建表程序、存储过程、触发器框架等。...
一、去掉 Oracle 生成的 SQL 创建语句中的双引号 在 PowerDesign 里,导出 Oracle 数据库的建表 SQL 时,默认会给表名和字段名加上双引号。解决方法是设置 Database 菜单,然后点击 Edit Current DBMS 菜单,再依次...
生成建表脚本是将PDM模型转化为数据库创建语句,以便在数据库中实施。在PDM中,选择“数据库”>“生成”>“SQL脚本”,定制脚本选项,如表空间、存储过程等。 5. PDM生成REPORT REPORT功能用于创建模型报告,展示...
- 当你在SQL语句中遇到表名和字段名被引号包围导致大小写敏感问题时,可以在`Tools`菜单下选择`Model Options`,然后在`Naming Convention`选项中,调整`Name`和`Code`的`Character Case`设置为`Uppercase`或`...