none
能否导出Insert语句? RRS feed

  • 问题

  • 我有一个数据表,内装有系统运行的基础数据(3000条)。

    我写了一个程序,想在安装的时候自动完成这些数据的录入,就想能否把这个表导出为3000条: insert into [table](f1,f2)values('v1', 'v2') 这样的语句,然后系统初始化安装的时候运行这些行代码,就能完成基础数据的设置。

    要是让我手写这3000条语句,这可是个很不小的工作啊 ~~~~~~~~~~~~~~~~


    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/

    2012年7月9日 16:27

答案

全部回复

  • You can right click the db and choose tasks -> generate script in ssms, there's option to script out data as insert statements.
    • 已标记为答案 Dodu.NET 2012年7月10日 5:02
    2012年7月9日 18:00
  • 如果是SQL SERVER 2008

    参考:

    http://blog.csdn.net/studyzy/article/details/4303759

    如果是SQL SERVER 2000/2005

    参考:

    http://blog.csdn.net/qwlovedzm/article/details/7235790

    • 已标记为答案 Dodu.NET 2012年7月10日 5:02
    2012年7月10日 1:23
    版主
  • 或许您可以试着用数据库发布向导来产生 Insert Scripts。

    http://msdn.microsoft.com/zh-cn/library/bb907585.aspx


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年7月10日 3:26
  • CREATE      PROCEDURE  dbo.UspOutputData   
               @tablename  sysname  
    AS  
    declare  @column  varchar(1000)  
    declare  @columndata  varchar(1000)  
    declare  @sql  varchar(4000)  
    declare  @xtype  tinyint  
    declare  @name  sysname  
    declare  @objectId  int  
    declare  @objectname  sysname  
    declare  @ident  int  

    set  nocount  on  
    set  @objectId=object_id(@tablename)  

    if  @objectId  is  null  --  判斷對象是否存在    
    begin    
               print  'The  object  not  exists'    
               return    
    end    
    set    @objectname=rtrim(object_name(@objectId))  

    if    @objectname  is  null  or  charindex(@objectname,@tablename)=0  --此判断不严密  
    begin  
               print  'object  not  in  current  database'  
               return  
    end  

    if  OBJECTPROPERTY(@objectId,'IsTable')    <  >  1  --  判斷對象是否是table    
    begin    
               print  'The  object  is  not  table'    
               return    
    end    

    select  @ident=status&0x80    from  syscolumns  where  id=@objectid  and  status&0x80=0x80  

    if              @ident  is  not  null  
               print  'SET  IDENTITY_INSERT  '+@TableName+'  ON'  

    declare  syscolumns_cursor  cursor    
               for  select  c.name,c.xtype  from  syscolumns  c  
               where  c.id=@objectid  
               order  by  c.colid  
    open  syscolumns_cursor  
    set  @column=''  
    set  @columndata=''  
    fetch  next  from  syscolumns_cursor  into  @name,@xtype  
    while  @@fetch_status    <  >-1  
    begin  
               if  @@fetch_status  <  >-2  
               begin  
                           if  @xtype  not  in(189,34,35,99,98)  --timestamp不需处理,image,text,ntext,sql_variant  暂时不处理  
                           begin  
                                       set  @column=@column+case  when  len(@column)=0  then''  else  ','end+@name  
                                       set  @columndata=@columndata+case  when  len(@columndata)=0  then  ''  else  ','','','end  
                                                   +case  when  @xtype  in(167,175)  then  '''''''''+'+@name+'+'''''''''  --varchar,char  
                                                   when  @xtype  in(231,239)  then  '''N''''''+'+@name+'+'''''''''  --nvarchar,nchar  
                                                   when  @xtype=61  then  '''''''''+convert(char(23),'+@name+',121)+'''''''''  --datetime  
                                                   when  @xtype=58  then  '''''''''+convert(char(16),'+@name+',120)+'''''''''  --smalldatetime  
                                                   when  @xtype=36  then  '''''''''+convert(char(36),'+@name+')+'''''''''  --uniqueidentifier  
                                                   else  @name  end  
                           end  
               end      
               fetch  next  from  syscolumns_cursor  into  @name,@xtype  
    end  
    close  syscolumns_cursor  
    deallocate  syscolumns_cursor  

    set  @sql='set  nocount  on  select  ''insert  '+@tablename+'('+@column+')  values(''as  ''--'','+@columndata+','')''  from  '+@tablename  

    print  '--'+@sql  
    exec(@sql)  

    if              @ident  is  not  null  
               print  'SET  IDENTITY_INSERT  '+@TableName+'  OFF'  

    GO

    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.

    2012年7月10日 3:34
  • 选中要导出数据的数据库,任务-》导出数据,弹出 sqlserver导入和导出向导,选择要导出数据的表,然后导出就可以了,sqlserver的导入、导出数据功能就是干这个的

    当初始化安装的时候安装同样的步骤,导入回那些数据就可以了

    我的是sql2005企业版


    给我写信: QQ我:点击这里给我发消息

    2012年7月10日 3:34
  • 参考:

    如何运行 SQL Server 导入和导出向导


    给我写信: QQ我:点击这里给我发消息

    2012年7月10日 3:36
  • 正解。。

    谢谢各位兄弟们。


    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/

    2012年7月10日 5:03