【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----

时间: 2024-10-23 20:16:51

【SQL Sever】将SQL Sever中的一个数据表的数据导出为insert语句的相关文章

sql-为什么图中的SQL代码,from里面不用填其中一个来源表呢?

问题描述 为什么图中的SQL代码,from里面不用填其中一个来源表呢? 为什么图中的代码, 子查询里面的from只有orders这个表没有customers这个表呢? 我觉得括号里面from应该有customers,是因为我觉得SQL会先运行括号里面的内容.但实际顺序是怎样的呢? 解决方案 你这是SELECT里面的子查询,表示用customers.cust_id到orders里面去查找相关的订单数量 并且这时候的子查询每次SELECT只能是出一个值,不允许在select中的子查询查找出多个值,或

select-vs2010C#Web开发3个Dropdown控件从sql数据库中的4个表显示数据

问题描述 vs2010C#Web开发3个Dropdown控件从sql数据库中的4个表显示数据 实现效果:第一个下拉控件是选择学院,第二个下拉控件是选择系部,第三个下拉控件是选择班级.从网上找了个后台代码:前台: <%@ Page Language=""C#"" AutoEventWireup=""true"" CodeFile=""StudInfo.aspx.cs"" Inheri

javascript-JSP中的一个form表单需要提交到不同处理页面

问题描述 JSP中的一个form表单需要提交到不同处理页面 求助: 我的一个页面中的一个form表单有三个提交按钮,分别提交到不同的Servlet中处理后跳转 下边是javascript代码 function a(src){ var form = document.getElementById("form_tp"); form.action = src; form.submit(); alert(src);//弹窗 (未弹出) } 页面部分代码 <td> <label

一个检测表单数据的JavaScript实例

 一个检测表单数据的JavaScript实例,很简单,很实用,感兴趣的朋友可以看看 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 7

一个检测表单数据的JavaScript实例_javascript技巧

一个检测表单数据的JavaScript实例,很简单,很实用,感兴趣的朋友可以看看 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>每天一个JavaScript实例-检测表单数据</title> <style> [role

如何在C++中建立一个顺序表_C 语言

准备数据 复制代码 代码如下: #define MAXLEN 100 //定义顺序表的最大长度struct DATA{ char key[10]; //结点的关键字  char name[20]; int age;};struct SLType //定义顺序表结构 { DATA ListData[MAXLEN+1];//保存顺序表的结构数组 int ListLen;   //顺序表已存结点的数量 }; 定义了顺序表的最大长度MAXLEN.顺序表数据元素的类型DATA以及顺序表的数据结构SLTyp

查看一个Oracle表的数据定义语句。

oracle|数据|语句 前提:要求使用SQL PLUS. SQL> set pages 0 SQL> set long 1000000 SQL> select dbms_metadata.get_ddl('TABLE','表名','用户名') from dual;

在xmlhttp中传递cookie和表单数据

cookie|xml|数据 这里涉及到的是一些相对复杂的应用.使用合适的方法,可以在xmlhttp中传递cookie,提交表单. 这些也提醒我们需要防止该方法带来的漏洞. 第一,向服务器传送表单数据Dim forminfo,objXMLHTTPforminfo="user=niceidea&pw=111111"Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")objXMLHTTP.Open &q

用sql命令修改数据表中的一个字段为非空(not null)的语句_php技巧

ALTER TABLE table1 ALTER COLUMN [name] varchar(60) NULL; table1 表名 name 字段名 为什么加上[],因为name是sql关键字会冲突出现错误,这样以防万一. 如果name字段已经创建了索引,如果需要修改的话,必须先删除索引才能正确的进行.