分享
 
 
 

存储过程结合bcp--将数据库记录导出成SQL脚本的形式。

王朝mssql·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

pb9+SQLserver2k下通过

先建表A_Imp_Insert_Sql

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[A_Imp_Insert_Sql]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[A_Imp_Insert_Sql]

GO

CREATE TABLE [dbo].[A_Imp_Insert_Sql] (

[insertsql] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL ,

[flag] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL

) ON [PRIMARY]

GO

建存储过程proc_insert

CREATE proc proc_insert (@ls_server varchar(256),@ls_user varchar(20),@ls_pwd varchar(20),@tablename varchar(30),@ls_colName varchar(20),@ls_operator varchar(10),@str_bookid varchar(100))

as

begin

set nocount on

declare @sqlstr varchar(8000)

declare @sqlstr1 varchar(8000)

declare @sqlstr2 varchar(8000)

--改为在pb中删除表.

--exec( 'truncate table A_Imp_Insert_Sql')

--insert into A_Imp_Insert_Sql

--A_CLS_Temp

if @tablename ='A_CLS_Temp'

begin

-- 单独处理了,特殊对待

select @sqlstr=' select ''insert ChineseLibraryClass '

end

else

begin

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

end

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

Declare @sqlstr_B varchar(8000)

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

--select @sqlstr=@sqlstr+ ' where CATLRID='''+@str_bookid +''''

select @sqlstr=@sqlstr+ ' where '+@ls_colName+ @ls_operator+''''+@str_bookid +''''

--

--print @sqlstr

select @sqlstr_B='insert into A_Imp_Insert_Sql(insertsql,flag) ('+@sqlstr+')'

--print @sqlstr_B

--exec( @sqlstr)

exec( @sqlstr_B)

--导出为单独的存储过程

--Declare @bcpstr varchar(1000)

--set @bcpstr = 'bcp bookonline_test..A_Imp_Insert_Sql'

--set @bcpstr =@bcpstr +' out '+'c:\'+@tablename+'.TXT'+ ' -c -S'+@ls_server+' -U'+@ls_user+' -P'+@ls_pwd+''

--EXEC master..xp_cmdshell @bcpstr

set nocount off

end

GO

建存储过程proc_imp_text

CREATE PROCEDURE proc_imp_text (@ls_dbname varchar(50),@ls_server varchar(200),@ls_user varchar(200),@ls_pwd varchar(200),@ls_filepathname varchar(500),@ls_tabname varchar(50))

AS

Declare @bcpstr varchar(1500)

begin

set @bcpstr = 'bcp "select insertsql from '+@ls_dbname+'..A_Imp_Insert_Sql where flag='''+@ls_tabname+'''" queryout '+@ls_filepathname+ ' -w -S'+@ls_server+' -U'+@ls_user+' -P'+@ls_pwd+''

EXEC master..xp_cmdshell @bcpstr

end

GO

不明处联系:gutengcom@hotmail.com

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有