数据迁移之sql server2005 中两表关联更新数据操作

近期在做数据迁移的工作,老系统的数据迁移到新系统,当中麻烦的确不少,因为是重新设计的系统与老系统中有太多的不一至性,例如表结构,字段的处理,像附件的存储方式,还有历史遗留数据。。。

后面会慢慢的把相关技术处理细节展现出来,当然,难度不大,只是琐碎事情太多。

今天就简单来看看数据的关联更新。

业务场景:

同一个业务,有一张主表及一张子表,字段差不多,只是老系统中主键生成方式GUID,而新的主键生成方式自增长型,这里就不论合不合理了,来看看我们的问题。

我们要做的就是把老数据导入到新表,并且保持他们的关联,如果不能就不对了。

假设业务对象:

取要用的字段,其它的略

两张老表名称:OLD_TABLE(GUID),OLD_TABLE_SUM(OLD_TABLE_GUID);

两张新表名称:TABLE(ID),TABLE_SUB(TABLE_ID)

那么我们现在来处理他们:

第一步,分别给新表增加加字段GUID,为关联数据作准备;

alter table dbo.TABLE    add GUID char(38)

alter table dbo.TABLE_SUB    add GUID char(38)

TABLE_SUB中的GUID中放的是 OLD_TABLE_SUB的OLD_TABLE_GUID);

大家应该已经都明白了。

第二步,复制表数据。

这个是依据表结构的差异来处理,这个就略了。

就是把OLD_TABLE 数据处理后复制给TABLE

把OLD_TABLE_SUB 数据处理后复制给 TABLE_SUB

到这一步该有的数据都有了,

第三步,修改数据让两表关系。

UPDATE tempA
SET
tempA.[TABLE_ID] = tempB.ID
from TABLE_SUB  tempA,TABLE tempB
WHERE tempA.GUID = tempB.GUID

如此那么这两张表的业务关联已经建立。

第四步,就是把刚才所添加的字段去掉。

其它的技术细节后面慢慢发出。

邮箱:[email protected]

QQ:307266032

转载请注出处!

时间: 2024-08-18 00:27:50

数据迁移之sql server2005 中两表关联更新数据操作的相关文章

MySQL 中两表关联更新数据

通过用户手机号,更新他的添加时间和过期时间,两表关联更改副表内容 UPDATE expand_money e INNER JOIN members m ON e.uid = m.id SET e.add_time=unix_timestamp(),e.expired_time=unix_timestamp()+60*60*24*7 WHERE m.user_phone = '139139139139'

Oracle\MS SQL Server Update多表关联更新

原文:Oracle\MS SQL Server Update多表关联更新 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.我们先来讨论根据其他表数据更新你要更新的表   一.MS    SQL    Server   多表关联更新      sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来.虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就

数据迁移经验总结——亿级别多表异构的数据迁移工作

由于系统改版,最近三个月在做数据迁移工作,由于业务的特殊,基本将数据迁移所能踩的坑都踩了一遍,决定好好做个总结. 迁移类型--新老系统表结构变化较大的历史数据 一.核心问题 1.新老表结构变化极大.新表是以deliver为核心,另外还涉及仓储系统的一张表,订单系统的4张表,并按照新的逻辑映射关系进行迁移. 2.增量数据迁移.在全量数据迁移时必然会有新的数据,这些数据应该实时进行迁移 3.亿级别数据性能.效率的考虑.由于订单业务非常重要,数据迁移带来的qps对数据库的压力非常大,需要不断测试迭代找

在yii2中展示表关联的数据

方法一: 在数据库中构建数据表的时候,首先把表之间的关联关系也定义进去: 方法二: 在模型中定义表之间的关联关系,如下: public function getAuthor(){ return $this->hasOne(Author::className(),['id'=>'author_id']); } 此方法中的getAuthor为一对一的关系. 在视图中利用yii\helpers\ArrayHepler 类来填充下拉列表内容: echo $form->field($model,'

Oracle中如何实现Mysql的两表关联update操作

在看<MySQL 5.1参考手册>的时候,发现MySQL提供了一种两表关联update操作.原文如下: UPDATE items,month SET items.price=month.price WHERE items.id=month.id; 在MySQL中构造表验证了一下 mysql> select * from test; +------+--------+ | id | salary | +------+--------+ | 1 | 100 | | 2 | 200 | | 3

快速查看SQL Server 中各表的数据量以及占用空间大小

快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(18) ,Data varchar(18) ,index_size varchar(18) ,Unused varchar(18) ) GO INSERT #T EXEC SP_MSFOREACHTABLE 'EXEC sp_spaceused "?"' SELECT * FROM #T O

SQL语句中----删除表数据drop、truncate和delete的用法

一.SQL中的语法 1.drop table 表名称                         eg: drop table  dbo.Sys_Test 2.truncate table 表名称                     eg: truncate  table dbo.Sys_Test   3.delete from 表名称 where 列名称 = 值      eg: delete from dbo.Sys_Test where test='test' 二.drop,tru

Yii2中多表关联查询(join、joinwith) with是不执行sql的

Yii2中多表关联查询(join.joinwith) 我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer (id customer_name) 订单表Order (id order_name customer_id book_id) 图书表 (id book_name author_id) 作者表 (id author_name) 模型定义 下面是这4个个模型的定义,只写出其中的关联 Customer class Customer extends \

SQL Server中多表连接时驱动顺序对性能的影响

原文:SQL Server中多表连接时驱动顺序对性能的影响 本文出处:http://www.cnblogs.com/wy123/p/7106861.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) 最近在SQL Server中多次遇到开发人员提交过来的有性能问题的SQL,其表面的原因是表之间去的驱动顺序造成的性能问题,具体表现在(已排除其他因素影响的情况下),存储过程偶发性的执行时间超出预期,甚至在调试的时候