纵里寻她千百度,sql sever结构存储在此处

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

纵里寻她千百度,sql sever结构存储在此处

小陈在一个应用里面通过脚本的方式把表中部分数据和完整的表结构复制出来,如何实现他却头痛了....


sql 没有像oracle那么方便的语句,可以直接查询表的定义:

--oracle

SELECT DBMS_METADATA.GET_DDL('TABLE','TABLE_NAME') FROM DUAL;

除了通过SSMS前端生成或者导出表定义,如何通过脚本的方式快速复制表或者表的所有相关对象(索引、约束...)定义语句呢?

sp_help可以看到表的结构,当时不能拿到表的定义语句。

来来来,您可以这样子去把表的完整定义捞出来

首先,select * into  新表名 from 旧表名

这里我们会发现数据是很快进去了,但是新表的结构只有列的定义,其他都没有:

(1)、没有索引

(2)、没有主键约束、缺省值约束、check约束、外键约束

(3)、计算列变成普通列

那么接下来应该怎么处理呢?

第二步,需要把主键约束和索引的定义拼出来,内容在这里找:

indexes、index_columns

select c.name table_name,a.name index_name,(CASE i.is_unique  when 1 then 'UNIQUE' else 'NONUNIQUE'  end) 

AS uniqueness,d.name column_name,null expression from sysindexes a join sysindexkeys b on a.id=b.id and a.indid=b.indid

 join sys.indexes i

on i.name=a.name join sysobjects c on b.id=c.id join syscolumns d on b.id=d.id  and b.colid=d.colid where a.indid not in(0,255) and 

i.is_primary_key<>1 and c.name='T_GL_VOUCHER' order by c.name,a.name,b.keyno,d.name

第三步,需要把外键约束的定义拼出来,内容在这里找

foreign_keys、foreign_key_columns

第四步、需要把check约束拼出来,内容在这里找

check_constraints

第五步、需要把缺省值约束拼出来,内容在这里找

default_constraints

第六步、需要把新表中假的计算列删除,在这里找计算列定义:

computed_columns

好了,这下可以踏实做复制了吧


0.0


你可以使用datagrip,打开空白的查询窗口,然后输入select * from 表名, 在表名位置按住ctrl+鼠标左键后就打开了表定义的窗口。剩下的就是你们自己的copy

纵里寻她千百度,sql sever结构存储在此处

小陈在一个应用里面通过脚本的方式把表中部分数据和完整的表结构复制出来,如何实现他却头痛了....sql 没有像oracle那么方便的语句,可以...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息