이미 만들어진 테이블을 명령어를 이용해서 쿼리로 다시 만들고싶은데요 방법이 없을까요... MS-SQL은 있는데..머 인덱스같은건 안만들어졌던거같은데...... 암튼.. 시스템은 유닉스구요 쿼리로 만드는 방법 아시는 분 리플 부탁해요^^
그냥 Sybase Central이용하세요~
Sybsystemprocs에 설치하시고 sp__revtable tablename 로 보실수 있습니다. 지금은 유료화되고 있는 추세지만 Ed Barlow에서 아직까지 무료로 배포되는 sp에요. /* Procedure copyright(c) 1995 by Edward M Barlow */
/******************************************************************************
**
** Name : sp__revtable
** Created By : Ed Barlow
******************************************************************************/
use master
go
dump tran master with no_log
IF EXISTS (SELECT * FROM sysobjects
WHERE name = 'sp__revtable'
AND type = 'P')
DROP PROC sp__revtable
create proc sp__revtable(@objname char(30)=NULL)
as
begin
declare @objid int
declare @cnt int, @status tinyint, @type tinyint, @buffer varchar(70)
declare @fldname char(30),@maxcnt int,@prec int, @scale int, @maxnamelen int
set nocount on
if @objname is null
select convert(varchar(70), 'Usage: sp__revtable @objname')
return -1
end
select @objid=object_id(@objname)
if @objid is null
select convert(varchar(70), 'Object '+@objname+' Not Found')
create table #tmp ( row_id int, tbl_txt varchar(70) )
insert #tmp values (-1,'CREATE TABLE '+@objname)
insert #tmp values ( 0,'(')
select @cnt=1
select @maxcnt=count(*) from syscolumns c where c.id = @objid
select @maxnamelen = max(len(name))+2
from syscolumns
where id = @objid
while 1=1
/* We are trying to allign the fields */
select
/* output is c.name for n characters */
@buffer=' "' + substring(c.name+'"'+space(30),1,@maxnamelen)
+ t.name +
+ substring('(' + convert(varchar(3),c.length) + ')',
1, 6 * (charindex(t.name, 'varchar/varbinary'))),
@scale = 0,
@prec = 0,
@fldname= t.name,
@status = c.status,
@type = c.type
from syscolumns c left outer join systypes t
on c.usertype = t.usertype
where c.id = @objid
and colid=@cnt
if @@rowcount = 0 break
if @fldname = 'numeric'
select @buffer=rtrim(@buffer) + '(' + convert(varchar(3),@prec)
if @scale > 0
select @buffer=rtrim(@buffer) +',' + convert(varchar(3),@scale)
select @buffer=rtrim(@buffer) + ')'
if @fldname = 'decimal'
select @buffer=rtrim(@buffer) + '(' + convert(varchar(3),@prec) + ')'
if (@fldname != 'bit' and @status & 0x80 != 0)
select @buffer = rtrim(@buffer) + ' identity'
if (@fldname != 'bit' and @status & 8 != 0)
select @buffer = substring(@buffer+space(24),1,@maxnamelen+24) + 'NULL'
else
select @buffer = substring(@buffer+space(24),1,@maxnamelen+24) + 'NOT NULL'
if @cnt < @maxcnt
select @buffer = rtrim(@buffer) + ','
insert #tmp values (@cnt,@buffer)
select @cnt=@cnt+1
insert #tmp values (@cnt,')')
select rtrim(tbl_txt) from #tmp order by row_id
drop table #tmp
return(0)
grant execute on sp__revtable to public