我有两(2)个不同原理图的数据库,
db1从mssql迁移到mysql
以及
从laravel迁移创建的db2。
这里的挑战是:db1的表没有 id
在db2表中很容易找到类似的列(主键)。所以我一直收到警告信息:
Current selection does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available.
所以我不得不注射 id
db1中表上的列
我需要从db1的stdlist中提取字段[level\u name,class\u name],
在db2上创建级别(id、level\u name、x、y)
db2上的类(id、class\u name、level\u id)
要提供更多信息:level\ id应该来自已经创建的levels表
我已经使用以下代码片段成功地提取了第一个示例:
创建标高的第一个查询
INSERT INTO db2.levels(level_name,X,Y)
SELECT class_name as level_name,1 as X,ClassAdmitted as Y
FROM db1.stdlist
GROUP BY ClassAdmitted;
这是成功的。
现在,我需要使用新创建的 id
在levels表中填充level\ id列。要做到这一点,我必须重新运行上述选择示意图吗?没有更好的方法可以将表列从db1.levels连接到db2.stdlist并提取新的insert schematics所需的字段。
我会感激你的帮助。提前谢谢。
2条答案
按热度按时间f45qwnt81#
这就是最终对我起作用的原因:
首先,我从初始数据库中提取级别,因此:
然后我为类插入创建了一个过程
有了这个,我就可以扔掉
classes
与先前创建的level_id
s。整个魔法依赖于
CURSOR
协议。关于更多细节,这里是我使用的文档之一。
ttcibm8c2#
尝试为“已处理”添加列,然后执行while exists循环
您可能需要先转储到temp表中,然后在完成处理后插入到实际表(db2.levels)中。这样就不需要在最后一个表上处理不必要的列。