请问有什么工具或者直接的SQL语句,可以实现下面的功能?功能是可以把一个数据库的数据都导出来?目的是比如我已经建好了数据库的表结构,直接运行这个SQL就可以把数据加进来了?当然可以用数据库的备份和回复实现,我想要的能购实现的SQL语句,这样就可以直接在查询分析器
实现了。

解决方案 »

  1.   

    还原整个数据库:RESTORE DATABASE { database_name | @database_name_var } 
    [ FROM < backup_device > [ ,...n ] ] 
    [ WITH
        [ RESTRICTED_USER ]
        [ [ , ] FILE = { file_number | @file_number } ]
        [ [ , ] PASSWORD = { password | @password_variable } ]
        [ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
        [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
        [ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
                [ ,...n ]
        [ [ , ] KEEP_REPLICATION ]
        [ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ]
        [ [ , ] { NOREWIND | REWIND } ]
        [ [ , ] { NOUNLOAD | UNLOAD } ]
        [ [ , ] REPLACE ]
        [ [ , ] RESTART ]
        [ [ , ] STATS [ = percentage ] ] 
    ]还原数据库的部分内容:RESTORE DATABASE { database_name | @database_name_var }
        < file_or_filegroup > [ ,...n ] 
    [ FROM < backup_device > [ ,...n ] ] 
    [ WITH
        { PARTIAL }
        [ [ , ] FILE = { file_number | @file_number } ]
        [ [ , ] PASSWORD = { password | @password_variable } ]
        [ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
        [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
        [ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
                [ ,...n ]
        [ [ , ] NORECOVERY ]
        [ [ , ] { NOREWIND | REWIND } ]
        [ [ , ] { NOUNLOAD | UNLOAD } ]
        [ [ , ] REPLACE ]
        [ [ , ] RESTRICTED_USER ]
        [ [ , ] RESTART ]
        [ [ , ] STATS [ = percentage ] ] 
    ]还原特定的文件或文件组:RESTORE DATABASE { database_name | @database_name_var }
        < file_or_filegroup > [ ,...n ] 
    [ FROM < backup_device > [ ,...n ] ] 
    [ WITH
        [ RESTRICTED_USER ]
        [ [ , ] FILE = { file_number | @file_number } ]
        [ [ , ] PASSWORD = { password | @password_variable } ]
        [ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
        [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
        [ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
                [ ,...n ]
        [ [ , ] NORECOVERY ]
        [ [ , ] { NOREWIND | REWIND } ]
        [ [ , ] { NOUNLOAD | UNLOAD } ]
        [ [ , ] REPLACE ]
        [ [ , ] RESTART ]
        [ [ , ] STATS [ = percentage ] ] 
    ]还原事务日志:RESTORE LOG { database_name | @database_name_var } 
    [ FROM < backup_device > [ ,...n ] ] 
    [ WITH
        [ RESTRICTED_USER ]
        [ [ , ] FILE = { file_number | @file_number } ]
        [ [ , ] PASSWORD = { password | @password_variable } ]
        [ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
                [ ,...n ]
        [ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
        [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
        [ [ , ] KEEP_REPLICATION ]
        [ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ]
        [ [ , ] { NOREWIND | REWIND } ]
        [ [ , ] { NOUNLOAD | UNLOAD } ]
        [ [ , ] RESTART ]
        [ [ , ] STATS [= percentage ] ]
        [ [ , ] STOPAT = { date_time | @date_time_var }
            | [ , ] STOPATMARK = '_name' [ AFTER datetime ]
            | [ , ] STOPBEFOREMARK = '_name' [ AFTER datetime ] 
        ] 
    ] < backup_device > ::=
        { 
            { 'logical_backup_device_name' | @logical_backup_device_name_var }
            | { DISK | TAPE } =
                { 'physical_backup_device_name' | @physical_backup_device_name_var } 
        } < file_or_filegroup > ::=
        { 
            FILE = { logical_file_name | @logical_file_name_var }
            | 
            FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var} 
        } 参数
    DATABASE指定从备份还原整个数据库。如果指定了文件和文件组列表,则只还原那些文件和文件组。{database_name | @database_name_var}是将日志或整个数据库还原到的数据库。如果将其作为变量 (@database_name_var) 提供,则可将该名称指定为字符串常量 (@database_name_var = database name) 或字符串数据类型(ntext 或 text 数据类型除外)的变量。FROM指定从中还原备份的备份设备。如果没有指定 FROM 子句,则不会发生备份还原,而是恢复数据库。可用省略 FROM 子句的办法尝试恢复通过 NORECOVERY 选项还原的数据库,或切换到一台备用服务器上。如果省略 FROM 子句,则必须指定 NORECOVERY、RECOVERY 或 STANDBY。< backup_device >指定还原操作要使用的逻辑或物理备份设备。可以是下列一种或多种形式: {'logical_backup_device_name' | @logical_backup_device_name_var} 
    是由 sp_addumpdevice 创建的备份设备(数据库将从该备份设备还原)的逻辑名称,该名称必须符合标识符规则。如果作为变量 (@logical_backup_device_name_var) 提供,则可以指定字符串常量 (@logical_backup_device_name_var = logical_backup_device_name) 或字符串数据类型(ntext 或 text 数据类型除外)的变量作为备份设备名。{DISK | TAPE } = 
    'physical_backup_device_name' | @physical_backup_device_name_var 
    允许从命名磁盘或磁带设备还原备份。磁盘或磁带的设备类型应该用设备的真实名称(例如:完整的路径和文件名)来指定:DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\Mybackup.dat' 或 TAPE = '\\.\TAPE0'。如果指定为变量 (@physical_backup_device_name_var),则设备名称可以是字符串常量 (@physical_backup_device_name_var = 'physical_backup_device_name') 或字符串数据类型(ntext 或 text 数据类型除外)的变量。 
    如果使用的是含有 UNC 名称的网络服务器或已重新定向的驱动器号,则请指定磁盘的设备类型。运行 SQL Server 时所使用的帐户必须具有对远程计算机或网络服务器的 READ 访问权,这样才能执行RESTORE 操作。 n
      

  2.   

    使用第三方工具ms-sql10.exe或使用SQL语句来实现--引用-- 根据表中数据生成insert语句的存储过程
    Create Proc proc_insert (@tablename varchar(256)) 
     as                       -- 表名称
    begin 
      set nocount on
        Declare @sqlstr  varchar(4000),
                @sqlstr1 varchar(4000),
                @sqlstr2 varchar(4000)     Select @sqlstr='select ''Insert '+@tablename        Select @sqlstr1= ' Values ( ''+',   @sqlstr2=' ('       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
     
           exec( @sqlstr)       set nocount offendGO -- 调用
    exec proc_insert '表名'Declare T cursor for Select select name from sysobjects where type='U'
    Declare @Table varchar(200)
    fetch next  from T into @Table
    while @@FETCH_STATUS=0 
     begin
      exec proc_insert @Table
      fetch next  from T into @Table
    end
    close T
    deallocate T  
      
      

  3.   

    --第三方工具下载2.0版本http://www.678e.cn/SoftView/SoftView_8582.html
      

  4.   

    我记得可以用select into 之类插入数据?有类似于这个的SQL语句嘛?
    谢谢
      

  5.   

    我是说不用这个“DTS向导导入导出数据~”
    用SQL语句怎样实现?
      

  6.   

    --用SQL语句实现:--引用-- 根据表中数据生成insert语句的存储过程
    Create Proc proc_insert (@tablename varchar(256)) 
     as                       -- 表名称
    begin 
      set nocount on
        Declare @sqlstr  varchar(4000),
                @sqlstr1 varchar(4000),
                @sqlstr2 varchar(4000)     Select @sqlstr='select ''Insert '+@tablename        Select @sqlstr1= ' Values ( ''+',   @sqlstr2=' ('       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
     
           exec( @sqlstr)       set nocount offendGO -- 调用
    exec proc_insert '表名'Declare T cursor for Select select name from sysobjects where type='U'
    Declare @Table varchar(200)
    fetch next  from T into @Table
    while @@FETCH_STATUS=0 
     begin
      exec proc_insert @Table
      fetch next  from T into @Table
    end
    close T
    deallocate T