两张表存在于两个不同的数据库中,并且两张表的结构和字段都不相同,现在我想要将一张表中的数据复制到另一张表中,
用DTS导入,选择相应的列映射时目的表中有一些字段不能为空,这些不为空的字段又不能随便写,有没有方法可以导入数据呢?
难点在于两张表结构不同,目的表中的某些字段可能源表中没有对应的项。
用DTS导入,选择相应的列映射时目的表中有一些字段不能为空,这些不为空的字段又不能随便写,有没有方法可以导入数据呢?
难点在于两张表结构不同,目的表中的某些字段可能源表中没有对应的项。
解决方案 »
- 立马结贴。请教一SQL
- 辽宁北软沈阳分公司于2007/1/16日开张,急聘delphi开发部经理、项目经理、工程师
- 如何取得表中字段的说明,select * from syscolumns where id = object_id('XT_JCDW')
- 今天终于解决了一个困惑已久的关于SQL Server安装的问题,高兴所以散点分庆祝一下!
- sql server2000被人攻击:企业管理器、查询分析器都看不到数据
- 200分诚心请教各位热心的朋友:请问这个是交叉表吗?是否可以用最少的语句来生成?
- 请问,关于将数据阶段性的导入到数据库
- SQL数据库错误导入,请问如何恢复
- 请解释一下什么是存储过程?
- 关于数据库恢复的问题
- 大家快帮忙
- 存储过程中调用临时表问题!
select 对应字段 from 源表 where 条件
先用DTS倒入到一个新表,字段当然和原表一摸一样
再想办法用
insert ...(...) select ... from ...
来倒入数据,所有字段都必须找出一个规则,必要的时候可以用case when 语句根据不同条件决定数据
select 对应字段 from dts导过来的表 where 条件
等 级:
发表于:2008-02-01 15:23:215楼 得分:0
1楼的兄弟,那样是不行的,因为目的表有些字段不能为空
--------------------------------------------
某些字段不能为空 那么你要默认为什么啊还是 导入为什么
将目标表字段不能为空的,设置为可以为空!insert into 目的表(字段1,字段2.....)
select 字段1,字段2..... from dts导过来的表 where 条件
--示例
declare @ta table(ID int,name varchar(20))
insert into @ta select 1,'a'
insert into @ta select 2,'b'
insert into @ta select 3,nulldeclare @tb table(NID int not null,Nname varchar(20) not null)insert into @tb select isnull(ID,0),isnull(name,'') from @ta
select * from @tb
--
--NID Nname
------------- --------------------
--1 a
--2 b
--3
DOCID DOCCHANNEL CLASSID DOCTYPE DOCTITLE
1 0 0 1 火箭取得三连胜
2 1 0 1 国际米兰取得8连胜
... ... ... .. .....
其中:DOCID是主键,其他字段均不能为空源表:NEWS(这个表中没有设置主键)
ID TITLE AUTHOR TYPE
1 国足的信息 不详 0
2 雪灾的信息 不详 0注意:目的表和源表的字段不是一一对应的,也就说目的表的有些字段源表没有,
就算有也不是目的表字段所表示的意思,现在想将源表中的TITLE中的数据复制
到目的表的DOCTITLE中,但是其他字段是不能为空的,又不能乱改目的表,列
映射的时候主键还不能重复