日期:2014-05-18  浏览次数:20527 次

找个将MS SQL表中的数据导出成INSERT语句的工具
以前用过,不知道被我扔到哪里去了.

急用!谢谢.

------解决方案--------------------
也可以用SQL语句获得:
SQL code
 

--创建得到insert语句的存储过程
CREATE proc proc_insert
(
@tablename varchar(256)
,@where varchar(8000)=null
,@orderby varchar(8000)=null
)
as
begin
set nocount on
declare @sqlstr varchar(8000)
declare @sqlstr1 varchar(8000)
declare @sqlstr2 varchar(8000)

SELECT '/*------------------table: ' + @tablename + '--------*/'

IF OBJECTPROPERTY(OBJECT_ID(@tablename), 'TableHasIdentity') = 1
BEGIN
SELECT 'SET IDENTITY_INSERT ' + @tablename + ' ON '
  SELECT 'GO '
END
-- set @where=replace(@where,'''','''''')

select @sqlstr='select ''INSERT INTO '+@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 =36 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
when a.xtype =35 or a.xtype = 99 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace(convert(varchar(8000),'+a.name+'),'''''''','''''''''''')' + '+'''''''''+' end'
when a.xtype =61  then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',101)'+ '+'''''''''+' 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