首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 导数据库的数据的问题 [已结贴,结贴人:szc21]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • szc21
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-21 16:48:17 楼主
    从一个数据库A导数据进另一库B,怎么把表的主键之类的也导进去?B数据库为空,我在向导里面选择 启用标示插入 发现没有插入主键。
    如果不能这样的话,请问怎么把这个库里面的某些表的数据完整的到进另一库。(主键,数据都在)在线等
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • songhtao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

      2

    发表于:2008-08-21 16:50:041楼 得分:10
    B数据库为空你可以把A数据库备份然后恢复到B这样什么都有了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gxg353
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 16:50:152楼 得分:20
    先把表结构生成SQL脚本,然后B中创建表结构!在导数据。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wufeng4552
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 16:51:513楼 得分:20
    1:先在数据库A生成脚本(里面有选项可以选择主键等)然后到B库执行
    2DTS导入
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • szc21
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 16:54:294楼 得分:0
    引用 1 楼 songhtao 的回复:
    B数据库为空你可以把A数据库备份然后恢复到B这样什么都有了。

    我只要某写数据,所以不能备份恢复,A数据库太大。

    另外2位说的方法我也用过,B里面有主键了,然后导数据进去的时候,报主键插入错误,不让插
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • szx1999
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 16:57:115楼 得分:10
    既然数据库B是空的,
    那么可以选择copy database...,
    把需要的表及数据拷贝过去。
    这样可以保证完整性。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gxg353
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 17:00:296楼 得分:30
    还有个方法!针对A里面的个别表(你想导出的表)做备份,然后还原B数据库!

    --备份指定表到另一数据库

    --  备份指定数据库中的指定表列表到一个新的数据库

    --邹建 2003.12--*/

    /*--调用示例
        --备份数据当前数据库的所有内容
        exec p_backupdatabase
       
        --备份当前数据库的指定表
        exec p_backupdatabase @tblist='tb,tb1,tb2'
    --*/

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_BackupDataBase]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[p_BackupDataBase]
    GO

    CREATE PROCEDURE p_BackupDataBase
    @s_dbname sysname='',            --要备份的数据库名,如果不指定,则备份当前数据库
    @d_dbname sysname='',            --备份生成的数据库名,如果不指定,则为:@s_dbname+'_bak'
    @tblist varchar(8000)=''        --要备份的表名列表,如果不指定,则表示所有用户表
    AS
    declare @sql varchar(8000),@err_msg varchar(1000)

    --参数检测
    if isnull(@s_dbname,'')='' set @s_dbname=db_name()
    if isnull(@d_dbname,'')='' set @d_dbname=@s_dbname+'_bak'
    if exists(select 1 from master..sysdatabases where name=@d_dbname)
    begin
        set @err_msg='备份的数据库 ['+@d_dbname+'] 已经存在!'
        goto lb_exit
    end
    if not exists(select 1 from master..sysdatabases where name=@s_dbname)
    begin
        set @err_msg='要备份的数据库 ['+@d_dbname+'] 不存在!'
        goto lb_exit
    end

    --创建备份的数据库
    set @sql='create database ['+@d_dbname+'] '
    exec(@sql)

    --备份表
    declare @tbname sysname
    set @sql='declare tb cursor for
    select name from ['+@s_dbname+']..sysobjects
    where status>0 and xtype=''U'''
    +case isnull(@tblist,'') when '' then ''
        else ' and name in('''+replace(@tblist,',',''',''')+''')' end
    exec(@sql)
    open tb
    fetch next from tb into @tbname
    while @@fetch_status=0
    begin
        set @sql='select * into ['+@d_dbname+']..['+@tbname
            +'] from ['+@s_dbname+']..['+@tbname+']'
        exec(@sql)
        fetch next from tb into @tbname
    end
    close tb
    deallocate tb

    lb_exit:
        if @err_msg <>'' raiserror(@err_msg,1,16)
    go
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fengfan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 17:01:187楼 得分:10
    表为空的话dts在导入导出时可以选择创建目标表吧?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • szc21
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 17:07:448楼 得分:0
    引用 5 楼 szx1999 的回复:
    既然数据库B是空的,
    那么可以选择copy database...,
    把需要的表及数据拷贝过去。
    这样可以保证完整性。

    谢谢楼上几位,这种方式可能行。我刚试了另外一种操作,B里面有主键的时候,启用标示插入 就成功了,呵呵。2种操作,我分开用了,难怪都不行,马上结贴。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved