根据数据库中数据表的内容导出insert... sql脚本的存储过程

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

在我们设计好数据库的时候,往往需要添加初始化数据,如果每行数据都自己来写则比较的麻烦,这个存储过程则是帮助大家来生成insert into脚本的存储过程

-- ======================================================

--根据表中数据生成insert语句的存储过程

--建立存储过程,执行 proc_GetInsertSql表名

--感谢Sky_blue

-- ======================================================

 

CREATE proc proc_GetInsertSql (@tablename varchar(256))

as

begin

       set nocount on

       declare @sqlstr varchar(4000)

       declare @sqlstr1 varchar(4000)

       declare @sqlstr2 varchar(4000)

       select @sqlstr='select ''insert '+@tablename

       select @sqlstr1=''

       select @sqlstr2=' ('

       select @sqlstr1= ' values ( ''+'

       select @sqlstr1=@sqlstr1+col+'+'',''+' ,@sqlstr2=@sqlstr2+name +',' from (select case

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

       when a.xtype =104 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(1),'+a.name +')'+' end'

       when a.xtype =175 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'

       when a.xtype =61 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'

       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'

       when a.xtype =62 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'

       when a.xtype =56 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(11),'+a.name +')'+' end'

       when a.xtype =60 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'

       when a.xtype =239 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'

       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'

       when a.xtype =231 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'

       when a.xtype =59 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'

       when a.xtype =58 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'

       when a.xtype =52 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(12),'+a.name +')'+' end'

       when a.xtype =122 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'

       when a.xtype =48 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(6),'+a.name +')'+' end'

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

       when a.xtype =167 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'

       else '''NULL'''

       end as col,a.colid,a.name

       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

       )t order by colid

      

       select @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+') '+left(@sqlstr1,len(@sqlstr1)-3)+')'' from '+@tablename

print @sqlstr

       exec( @sqlstr)

       set nocount off

end

GO

调用方法:execute proc_GetInsertSql '表名'

SQL INSERT INTO SELECT 语句、sql约束 通过 SQL,您可以从一个复制信息到另一个INSERT INTO SELECT 语句从一个复制数据,然后把数据插入到一个已存在的中。 阅读详情

相关推荐

PostgreSQL使用pg_dump导出单个数据表insert语句

PostgreSQL自带的pgadmin4工具没有办法生成数据表insert语句,这使得想要提取单个的数据,插入到不同环境的相同中变成很麻烦的一件事,使用PostgreSQL的pg_dump工具可以实现该功能。 目录 使用效果 操作过程 参考资料 使用效果 截图1.在空的中执行导出sql文件 截图2.插入的数据 使用pg_dump导出sql语句文件,直接在数据库中\i 执行,即可成功插入数据。 操作过程 截图3.导出sql语句 截图4.生成的SQL文件内容 命令.

Gam's Blog 8908

根据名及字段,自动生成insert,update,select语句

首先在数据库中创建存储过程和方法,然后调用创建好的存储过程,生成带有与名及字段相关的insert,update,delete语句,变量与字段名相同,例如: "insert into temp (col1,col2,col3) values ('"+col1+"','"+col2+"',"+col3+")" 可以根据字段类型,判断是否需要拼写单引号‘’。

java导出insert语句并生成sql脚本

package com.mtpc.admin.controller.exportSql; import ch.qos.logback.classic.db.names.ColumnName; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOExcep...

AAA_BBB 1万+

MS SQL Server将数据导出Insert语句的几种方案

少量数据直接导出SQL语句,使用起来比较方便。大量数据,就用SQL Server的导入导出功能了。 使用过几种方式(仍然是用Google去搜索……): 1.直接使用存储过程 SQL Server 2000使用存储过程导出insert语句 今天使用了一个通过存储过程生成sqlserver数据库insert语句的存储过程,我觉得很好用,谢谢这位高手了     if exists (

xiaokuang513204的专栏 3129

SQL Server2012将查询结果导出insert语句

SQL Server2012将查询结果导出insert语句 1、首先将查询结果添加到一个原数据库中不存在的名随意命名。 例:SELECT * INTO Mould_KindBak FROM dbo.Mould_Kind WHERE KindName like ‘石墨%’ . 这个Mould_KindBak就是不存在的名,执行时会自动新建Mould_KindBak,结构与Mould_Kind完全相同。 2、然后,用SQL Server 之基本的导出脚本方式,导出带数据的脚本,这时脚本会带新建和设

weixin_42675952的博客 5923

【走马观花】SQL Server 2012 将数据导出脚本详细图解

前记:从SQL SERVER 2008开始,我们就可以很方便的导出数据脚本,而无需再借助存储过程,但是SQL Server 2012和SQL Server 2008的导出脚本的过程还有一点细微的差别,我在这里详细的介绍一下。在SQL Server 2012中我们无法直接找到例如下图中的编写数据的脚本的选项。对于SQL Server 2008来说,我们可以在SSMS2008中的对象资源管理器中,右击

沧海一叶点滴心得 1万+

SQL Server导出数据脚本和导入数据库脚本的方法

1、首先在数据库上右键依次选择任务------>生成脚本。 2、选择要操作的,点击下一步 3、点击选择高级 4、滑动框拉到最下面会看到 “要编写脚本的数据的类型” ,在右边下拉中选择 架构和数据,点击确定 5、选择将脚本保存到文件,点击下一步 6、进入摘要,检查做出的选择,下一步。成功保存SQL脚本,点击完成。 ...

xiaohelan的博客 7169

根据mssql数据库数据表内容导出insert... sql脚本存储过程

在我们设计好数据库的时候,往往需要添加初始化数据,如果每行数据都自己来写则比较的麻烦,这个存储过程则是帮助大家来生成insert into脚本存储过程 -- ====================================================== --根据中数据生成insert语句的存储过程 --建立存储过程,执行 proc_GetInsertSql...

iteye_10711的博客 168

在MySQL中如何用SQL命令创建数据库数据表

HRELLO 大家好! 上期给大家讲解了,MySQL数据库常用的管理命令。现在,给大家讲解,如何用SQL命令在MySQL中创建一个数据库数据表。 在学习前,我们首先要了解,SQL命令是什么? SQL 结构化查询语言,专门用来操作关系型数据库 知道了SQL命令是什么,我们还要知道)SQL命令的执行方式,分为两种:交互模式和脚本模式。 交互模式:就是我们打开的MySQL命令窗口,查询数据库、进入数据库一样,输入一行,服务端就执行一行,不能一口气输入好几行的命令,那样服务端是不会执行的,就像交互一

weixin_53542481的博客 1万+

SQL Server数据导出INSERT语句完整指南

尽管商业工具功能强大,但在某些特定场景下仍存在局限性,比如无法满足合规审计要求、需嵌入私有加密逻辑,或受限于许可证成本。此时,基于开放平台自行开发轻量级导出工具成为必要补充手段。本节将展示如何使用C#与PowerShell结合SQL Server原生API,构建可控、可扩展的数据导出解决方案。

weixin_31315007的博客 1517

SQL Server 数据库之生成与执行 SQL 脚本

生成与执行 SQL 脚本1.数据库生成 1.数据库生成 使用对象资源管理器能快速创建整个数据的脚本,也能使用默认选项创建单个数据库对象的脚本; 用户能在查询编辑器窗口中对文件或剪贴板创建脚本脚本以 Unicode 格式创建; 用户也能创建用于创建或删除对象的脚本,有些对象类型具有其他脚本选项,如 ALTER、SELECT、INSERT、UPDATE、DELETE、EXECUTE 操作; ...

程序员小白的博客 2万+

SQL Server 2005导出数据表内容

InstallShield 2009导出数据表,exec UspOutputData 数据表名,选择将“结果令存为”,保存为*.sql格式

xuezhezhang的专栏 769

SQL语句(一)SQL数据库数据表的创建

SQL语句(一)SQL数据库数据表的创建 SQL的组成 (1) 数据定义语言DDL(Data Definition Language) 用于数据库数据表的创建、修改和删除等操作 CREATE (create) 创建数据库数据表 ALTER (alter) 修改数据库数据表 DRO...

豆子 3481

SQL Server 数据库之导入导出数据

导入数据也是数据库操作中使用频繁的功能,SQLServer数据库的导入和导出向导能将数据复制到提供托管**.ENTFramework**数据访问接口或本机OLEDB访问接口的任何数据源,也能从这些数据源复制数据;用户能访问接口的列,数据源包括SQLServer、平面文件、MicrosoftOfficeAccess、MicrosoftOfficeExcel;连接到源数据库和目标数据库或文件共享的权限,该权限在中,需要服务器和数据库的登录权限;SELECT权限;权限;...

m0_67401228的博客 1万+

导出数据在SQL Server中作为INSERT INTO

我正在使用SQL Server 2008 Management Studio并且有一个我想要迁移到其他数据库服务器的。 有没有选项将数据导出为插入SQL脚本

asdfgh0077的博客 913

数据库实验——数据表的导入导出

管理数据表 创建的目在于利用进行数据的存储和管理。对数据进行管理的前提是数据的存储,向中添加数据,没有数据的是没有任何实际意义的;添加完成后,用户也可以根据自己的需要对中数据进行修改和删除。在SQL Server 2008中,对于数据的管理包括插入、修改和删除,通过Management Studio来操作,也可以利用SQL语句来实现。 1、界面方式插入数据表 1.利用对象资源管理器插入...

WYMei_529 3287

SQL Server2000 数据表导出XML方法

SQL Server2000 数据表导出XML方法 1.       For XML 语句1)语法:FOR XML mode [, XMLDATA] [, ELEMENTS][, BINARY BASE64]2)参数:l  XML mode指定 XML 模式。XML 模式决定所得到的 XML 的形式。mode 可以是 RAW、AUTO 或 EXPLICIT。

云中客的专栏 7409

[Mysql] Navicat将数据表导出.sql文件

本文主要讲解使用Navicat将数据表导出sql文件

Hudas的博客 1万+
上一篇: SQL注入专题--整理帖
下一篇: SQL Server2005如何进行数据库定期备份
stone851112
博客等级 码龄18年 25粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值