存档

文章标签 ‘DLL’,文章数:2

Sybase ASE自带了一个导出对象结构的命令行工具:ddlgen

比较详细的用法,请参照:用DDLGEN从ASE数据库中提取对象的定义语法

如果对象结构中包含中文,使用参数: -Jcp936

比较实用的用法如下:

1、导出数据库tpchdb内所有表的表结构(包括索引):
    ddlgen -Usa -Psybase123456 -STEST -Dtpchdb -TU -N%.% -Jcp936 -O./tables.sql
2、导出数据库tpchdb内所有视图的创建语法:
    ddlgen -Usa -Psybase123456 -STEST -Dtpchdb -TV -N%.% -Jcp936 -O./views.sql
3、导出数据库tpchdb内所有存储过程的创建语法:
    ddlgen -Usa -Psybase123456 -STEST -Dtpchdb -TP -N%.% -Jcp936 -O./procs.sql
 
4、只导出表结构(不包含索引):
    ddlgen -Usa -Psybase123456 -STEST -Dtpchdb -TU -N%.% -FI -Jcp936 -O./tables.sql
5、仅仅导出表上的索引的语法:
    ddlgen -Usa -Psybase123456 -STEST -Dtpchdb -TI -N%.% -Jcp936 -O./indexes.sql
 

注意常见的对象类型:

I    ---    索引

U   ----  表

TR ---   触发器

P   ---   存储过程

V   ---   视图

 提供一个能够自动生成Sybase数据库内所有表的表结构、索引语法的存储过程。

存储过程名字:sp_gettabledll 下载

过程语法如下:

----------------------------------------------------------------------------------------------------------------------

if exists(select 1 from sysobjects where name = 'sp_gettabledll' and type = 'P')
  drop procedure sp_gettabledll
go

create procedure sp_gettabledll 
@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