将表中的数据生成INSERT 语句

解决方案 »

  1.   

    不很明白
    insert into newtable(field1,field2) select fielda,fieldb from oldtable
      

  2.   


    用pb  导出sql,就有insert  了
      

  3.   

    找了份原来的,方丈的:
     
    drop  proc  proc_insert  
    go  
    create  proc  proc_insert  (@tablename  varchar(256))  
    as  
    begin  
               set  nocount  on  
               declare  @sqlstr  varchar(8000)  
               declare  @sqlstr1  varchar(8000)  
               declare  @sqlstr2  varchar(8000)  
               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
      

  4.   

    意思就是:我想把某一个表中的数据生成insert 语句形式..
      

  5.   

    再运行这个存储过程
    exec proc_insert @tablename ='表名'
      

  6.   

    2005里有提供insert/delete/update..的格式 但是没有数据在其中
    一些3rd工具可以实现 比上面的代码应该更加严密
      

  7.   

    你也可以下载这个软件,将数据表的数据导出为插入sql语句http://www.delphibbs.com/delphibbs/dispq.asp?lid=2183212