存档
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