将SQLServer中指定表的数据导出为Insert语句形式

        之前需要导出数据库中某张表的数据,然后发现我安装的SQLServer没有这个功能(网上有人说SQLServer开发版有这个功能,我没安装过..),于是在网上找到了

这个存储过程替代一下,原网址也不知道是哪的了...

        虽然不是很完善,但足够了~,先记下,有大神看到的话希望指点一二大笑


步骤如下:

1.新建一个存储过程

CREATE PROC sp_Data2InsertSQL
@TableName AS VARCHAR(100)
AS

DECLARE	xCursor CURSOR FOR

SELECT name,xusertype
FROM syscolumns
WHERE (id = OBJECT_ID(@TableName))

DECLARE @F1 VARCHAR(100)
DECLARE @F2 integer
DECLARE @SQL varchar(8000)

SET @sql ='SELECT ''INSERT INTO ' + @TableName + ' VALUES('''

OPEN xCursor
FETCH xCursor INTO @F1,@F2
WHILE @@FETCH_STATUS = 0

BEGIN
SET @sql = @sql + ''
      + CASE WHEN @F2 IN (35,58,99,167,175,231,239,61) then ' + CASE WHEN ' + 
        @F1 + ' IS NULL THEN '''' ELSE '''''''' END + ' ELSE '+' END 
      + 'REPLACE(ISNULL(CAST(' + @F1 + ' AS VARCHAR(8000)),''NULL''),'''''''','''''''''''')'     
      + CASE WHEN @F2 IN (35,58,99,167,175,231,239,61) THEN ' + CASE WHEN ' + 
        @F1 + ' IS NULL THEN '''' ELSE '''''''' END + ' ELSE '+' END    
      + CHAR(13) + ''','''
FETCH NEXT FROM xCursor INTO @F1,@F2
END

CLOSE xCursor

DEALLOCATE xCursor

SET @sql = LEFT(@sql,LEN(@sql) - 5) + ' + '')'' FROM ' + @TableName

EXEC (@sql)

GO


2.执行存储过程
EXEC sp_Data2InsertSQL YourTable


将‘YourTable’替换为你想要导出数据的表名,执行即可。


很简单吧~但是在语句中你会发现没有table的字段,只有值,所以想要在其他库里面插入的话,还是先导出表结构在另外一个数据库中建好表吧。

备注:亲测过这个存储过程没有乱码现象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值