数据库中有两张表A,B,大部分字段相同,A表中没有数据,要把B表中的数据传给A表中相对应的字段
11两种情况
2.B表中的行在A表中都有,A表仅是缺少部分数据列
UPDATE A
SET A.F1 = B.F1,A.F2=B.F2
FROM B
WHERE A.Id = B.Id
AND B.Filter=...
3.B表中的数据未必在A表中都用,A表不仅缺数据列,还缺数据行.要执行两句(MSSQL)
INSERT INTO A(Id,F1,F2)
SELECT Id,F1,F2
FROM B
WHERE NOT EXISTS (SELECT Id FROM B WHERE A.Id = B.Id)
AND B.Filter= ...;
UPDATE A
SET A.F1 = B.F1,A.F2=B.F2
FROM B
WHERE A.Id = B.Id
AND B.Filter=...;
有些数据库有INSERT OR REPLACE 可以把这两句合二为一
update table2 b set xxx = (select xxx from table1 where id = ???) where id = ???
insert into A (a1, a2)
as select (b1, b2) from B
insert into.....select语句
insert into.....select语句
看实际吧是需要导入还是去更新,楼上的方法就行了,问题不是太明确哈。
有一个非常好用的办法,楼主可以先用exp备份,然后用Imp的导入
首先用SQL> exp system/system tables=用户名.b表 file=D:\ CSBN
我用system用户身份 我要备份有很多数据的B表 备份文件放在D盘的根下,文件名叫CSBN
在cmd 的dos界面 imp system/system fromuser=b表的拥有者 touser=a表的拥有者 tables=b表 file=D:\ CSBN