导数据库的数据的问题

szc21 2008-08-21 04:48:17
从一个数据库A导数据进另一库B,怎么把表的主键之类的也导进去?B数据库为空,我在向导里面选择 启用标示插入 发现没有插入主键。
如果不能这样的话,请问怎么把这个库里面的某些表的数据完整的到进另一库。(主键,数据都在)在线等
...全文
92 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
szc21 2008-08-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 szx1999 的回复:]
既然数据库B是空的,
那么可以选择copy database...,
把需要的表及数据拷贝过去。
这样可以保证完整性。
[/Quote]
谢谢楼上几位,这种方式可能行。我刚试了另外一种操作,B里面有主键的时候,启用标示插入 就成功了,呵呵。2种操作,我分开用了,难怪都不行,马上结贴。
fengfan 2008-08-21
  • 打赏
  • 举报
回复
表为空的话dts在导入导出时可以选择创建目标表吧?
gxg353 2008-08-21
  • 打赏
  • 举报
回复
还有个方法!针对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
等不到来世 2008-08-21
  • 打赏
  • 举报
回复
既然数据库B是空的,
那么可以选择copy database...,
把需要的表及数据拷贝过去。
这样可以保证完整性。
szc21 2008-08-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 songhtao 的回复:]
B数据库为空你可以把A数据库备份然后恢复到B这样什么都有了。
[/Quote]
我只要某写数据,所以不能备份恢复,A数据库太大。

另外2位说的方法我也用过,B里面有主键了,然后导数据进去的时候,报主键插入错误,不让插
水族杰纶 2008-08-21
  • 打赏
  • 举报
回复
1:先在数据库A生成脚本(里面有选项可以选择主键等)然后到B库执行
2DTS导入
gxg353 2008-08-21
  • 打赏
  • 举报
回复
先把表结构生成SQL脚本,然后B中创建表结构!在导数据。
我不懂电脑 2008-08-21
  • 打赏
  • 举报
回复
B数据库为空你可以把A数据库备份然后恢复到B这样什么都有了。

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧