更新
我忘了处理OP提出的报告问题(谢谢
Mark Bannister
)这里是如何处理报告的一个尝试。
在开始(数据迁移之前)生成用户名称、国家和年龄的报告将使用以下SQL(或多或少):
-- This query orders users by their Lastname
SELECT Lastname, Firstname, Age, Country FROM tableA order by Lastname;
与名称相关的字段不再存在于
tableA
后期数据迁移。我们必须与执行联接
tableB
获取信息。查询现在变为:
SELECT b.Lastname, b.Firstname, a.Country, a.Age FROM tableA a, tableB b
WHERE a.name = b.id ORDER BY b.Lastname;
我不知道您如何准确地生成报告,但这是您必须进行的更改的本质,才能使报告再次工作。
原始答案
考虑一下当你只有一张桌子的情况(
table A
)表中的几行如下所示:
# Picture 1
# Table A
------------------------------------------------------
Id | Country | Age | Firstname | Middlename | Lastname
1 | US | 45 | John | Fuller | Doe
2 | UK | 32 | Jane | Margaret | Smith
在添加第二个表之后(
table B
)与名称相关的字段将从
表A
到
表B
.
Table A
将有一个外键指向
表B
对应于每一行。
# Picture 2
# Table A
------------------------------------------------------
Id | Country | Age | Name
1 | US | 45 | 10
2 | UK | 32 | 11
# Table B
------------------------------------------------------
Id | Firstname | Middlename | Lastname
10 | John | Fuller | Doe
11 | Jane | Margaret | Smit
这是最后一张照片。关键是数据不会从
表A
到
表B
独自一人。唉,要做到这一点,需要人为干预。如果我是上述人类,我将遵循以下步骤:
-
创造
表B
带柱
Id
,
Firstname
,
Middlename
和
Lastname
. 你现在有两张桌子
A
和
B
.
一
拥有所有现有数据,
乙
是空的。
-
向添加外键
表A
. 此FK将被称为
name
并将引用
id
领域
表B
.
-
对于每一行
表A
在中创建新行
表B
使用
第一名字
,
中间名
和
姓氏
字段取自
表A
.
-
复制每一行后,更新
名称
领域
表A
与
身份证件
中新创建的行的
表B
.
数据库现在如下所示:
# Table A
-------------------------------------------------------------
Id | Country | Age | Firstname | Middlename | Lastname | Name
1 | US | 45 | John | Fuller | Doe | 10
2 | UK | 32 | Jane | Margaret | Smith | 11
# Table B
------------------------------------------------------
Id | Firstname | Middlename | Lastname
10 | John | Fuller | Doe
11 | Jane | Margaret | Smith
-
现在你不再需要
第一名字
,
中间名
和
姓氏
列
表A
所以你可以放下它们。
-
喂,您已经执行了数据迁移!
我刚才描述的过程只是数据迁移的一个具体示例。您可以使用多种语言/工具以多种方式完成它。机制的选择因人而异。