SQL Sever将SQL Sever中的一个数据表的数据导出为insert语句

Posted Angel挤一挤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Sever将SQL Sever中的一个数据表的数据导出为insert语句相关的知识,希望对你有一定的参考价值。

例如:这SQL   Sever中的一张数据表,想要将这张数据表中的数据  转化成一个一个的insert语句存储在txt的文档中,那么不论走到那里这个insert语句一执行,我们就能将这个数据表中的数据插入到另一个地方了。

1》在新建查询中,创建一个对象,这个对象就是用来产生这个对象的,名字叫proc_insert,我们可以创建多个不重名的对象,当然也可以删除这个对象。

 1 create proc proc_insert (@tablename varchar(256))
 2 as
 3 begin
 4 set nocount on
 5 declare @sqlstr varchar(4000)
 6 declare @sqlstr1 varchar(4000)
 7 declare @sqlstr2 varchar(4000)
 8 select @sqlstr=\'select \'\'insert \'+@tablename
 9 select @sqlstr1=\'\'
10 select @sqlstr2=\' (\'
11 select @sqlstr1= \' values ( \'\'+\'
12 select @sqlstr1=@sqlstr1+col+\'+\'\',\'\'+\' ,@sqlstr2=@sqlstr2+name +\',\' from (select case 
13 -- when a.xtype =173 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(\'+convert(varchar(4),a.length*2+2)+\'),\'+a.name +\')\'+\' end\'
14 when a.xtype =127 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(20),\'+a.name +\')\'+\' end\'
15 when a.xtype =104 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(1),\'+a.name +\')\'+\' end\'
16 when a.xtype =175 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'\'\'\'\'\'\'\'\'+\'+\'replace(\'+a.name+\',\'\'\'\'\'\'\'\',\'\'\'\'\'\'\'\'\'\'\'\')\' + \'+\'\'\'\'\'\'\'\'\'+\' end\'
17 when a.xtype =61 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'\'\'\'\'\'\'\'\'+\'+\'convert(varchar(23),\'+a.name +\',121)\'+ \'+\'\'\'\'\'\'\'\'\'+\' end\'
18 when a.xtype =106 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(\'+convert(varchar(4),a.xprec+2)+\'),\'+a.name +\')\'+\' end\'
19 when a.xtype =62 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(23),\'+a.name +\',2)\'+\' end\'
20 when a.xtype =56 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(11),\'+a.name +\')\'+\' end\'
21 when a.xtype =60 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(22),\'+a.name +\')\'+\' end\'
22 when a.xtype =239 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'\'\'\'\'\'\'\'\'+\'+\'replace(\'+a.name+\',\'\'\'\'\'\'\'\',\'\'\'\'\'\'\'\'\'\'\'\')\' + \'+\'\'\'\'\'\'\'\'\'+\' end\'
23 when a.xtype =108 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(\'+convert(varchar(4),a.xprec+2)+\'),\'+a.name +\')\'+\' end\'
24 when a.xtype =231 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'\'\'\'\'\'\'\'\'+\'+\'replace(\'+a.name+\',\'\'\'\'\'\'\'\',\'\'\'\'\'\'\'\'\'\'\'\')\' + \'+\'\'\'\'\'\'\'\'\'+\' end\'
25 when a.xtype =59 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(23),\'+a.name +\',2)\'+\' end\'
26 when a.xtype =58 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'\'\'\'\'\'\'\'\'+\'+\'convert(varchar(23),\'+a.name +\',121)\'+ \'+\'\'\'\'\'\'\'\'\'+\' end\'
27 when a.xtype =52 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(12),\'+a.name +\')\'+\' end\'
28 when a.xtype =122 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(22),\'+a.name +\')\'+\' end\'
29 when a.xtype =48 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(6),\'+a.name +\')\'+\' end\'
30 -- when a.xtype =165 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(\'+convert(varchar(4),a.length*2+2)+\'),\'+a.name +\')\'+\' end\'
31 when a.xtype =167 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'\'\'\'\'\'\'\'\'+\'+\'replace(\'+a.name+\',\'\'\'\'\'\'\'\',\'\'\'\'\'\'\'\'\'\'\'\')\' + \'+\'\'\'\'\'\'\'\'\'+\' end\'
32 else \'\'\'NULL\'\'\'
33 end as col,a.colid,a.name
34 from syscolumns a where a.id = object_id(@tablename) and a.xtype <>189 and a.xtype <>34 and a.xtype <>35 and a.xtype <>36
35 )t order by colid
36 
37 select @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+\') \'+left(@sqlstr1,len(@sqlstr1)-3)+\')\'\' from \'+@tablename
38 -- print @sqlstr
39 exec( @sqlstr)
40 set nocount off
41 end
42 go
View Code

2》执行这个对象,让他产生insert语句

1 exec proc_insert p_phone;
View Code

效果如下:

3》第一步全选,第二步将结果另存为

4》这样就生成了一个文本文件了

5》如果这里面的id是自增的,或者不想让某一列插入,那就将这些代码放在word中进行替换。

 

END----

以上是关于SQL Sever将SQL Sever中的一个数据表的数据导出为insert语句的主要内容,如果未能解决你的问题,请参考以下文章

SQL Sever索引

如何将Excel表导入现有的SQL SEVER数据表里面

SQL Sever AlwaysOn的数据同步原理

怎样在sql sever备份中恢复某一张表中的数据?

sql sever将两个表合起来语法

SQL问题,sql sever 服务和sql sever 网络配置都是空的如下图,请问该怎样解决