Mysql 将新数据库导入旧数据库,如何保留旧数据库的值[PHPMyAdmin]

Mysql 将新数据库导入旧数据库,如何保留旧数据库的值[PHPMyAdmin],mysql,database,phpmyadmin,Mysql,Database,Phpmyadmin,抱歉,也许是一个基本的问题,但我真的尝试了我自己的研究,但我甚至找不到这个问题的正确语法,所以我没有找到解决方案 我有一个数据库,在一个在线系统中有许多表、列、行等。我已经对系统进行了大量离线更新,并准备在本周上线。然而,由于系统内的新功能,一些表格已被修改,一些新表格已被添加等 我的问题是:我可以用经过大量修改的表更新我的数据库,但不能删除以前的信息吗?例如:假设我在旧系统中有一个名为Users的表,它跟踪用户名和密码。但我已经更新了系统,现在用户表跟踪用户名、密码、姓名、年龄、出生日期、分数

抱歉,也许是一个基本的问题,但我真的尝试了我自己的研究,但我甚至找不到这个问题的正确语法,所以我没有找到解决方案

我有一个数据库,在一个在线系统中有许多表、列、行等。我已经对系统进行了大量离线更新,并准备在本周上线。然而,由于系统内的新功能,一些表格已被修改,一些新表格已被添加等

我的问题是:我可以用经过大量修改的表更新我的数据库,但不能删除以前的信息吗?例如:假设我在旧系统中有一个名为Users的表,它跟踪用户名和密码。但我已经更新了系统,现在用户表跟踪用户名、密码、姓名、年龄、出生日期、分数。。。不管怎样,信息比以前多得多

我想做的是更新表(和整个数据库),以便显示新的列和表等,但不会丢失上一次迭代中的信息。因此,我不必为用户重新输入密码/用户名等

当我搜索这个问题时,我得到的答案是我可以手动输入新的表/列,或者它错误地认为我在询问值的串联,但这不是我的意图

理想情况下,我希望将新数据库导入旧数据库


非常感谢您的帮助。

因为您运行的是mysql服务器,所以只需编写一个查询即可导入数据

CREATE TABLE [dbo].[oldTable](
    [Pass] [varchar](50) NULL,
    [Username] [varchar](50) NULL
) ON [PRIMARY]

Insert into oldTable (Pass,Username)
Select 'pass', 'user'

CREATE TABLE [dbo].[newTable](
    [Pass] [varchar](50) NULL,
    [Username] [varchar](50) NULL,
    [OtherColumn] [varchar](50) NULL
) ON [PRIMARY]

Insert into newTable (Pass,Username)
Select 'pass2', 'user2'

首先,我强烈建议您制作生产数据的备份副本,并将其保存在手边。在开发数据集成时,您将多次将其恢复到“原始”状态

将备份副本还原到本地MySQL服务器实例上的不同数据库。在学习如何进行数据集成时,您将需要进行大量测试,其中一些测试将具有破坏性

这个过程将是对生产数据库的本地副本运行一系列脚本化的更改,然后查看它是否按您希望的方式工作。如果没有,请删除并恢复生产数据库的本地副本,更正数据集成步骤中的任何错误,然后重试。这可能需要几天的时间才能恢复正常,而且会有很多人被重复处决

因此,您有两项任务:

  • 升级生产数据库的表结构,使其与本地更改的数据库的表结构相匹配。您可以使用来进行许多这样的更改

    这是一项复杂的任务,因为很难分析两个不同的表并找出将一个表升级为另一个表所需的最小ALTER TABLE语句集。其中一个MySQL实用程序可以提供以下帮助:。您可以使用它生成所需的ALTERTABLE语句

  • 将本地数据同步到生产数据库中。这很复杂,因为您有一些数据应该部分覆盖现有的生产数据。你应该学会如何使用和使用

    有关这方面的一些有用解释,请参见我的答案

    您还可以执行UPDATE语句来连接来自不同数据库的表。如果您希望基于某列中的公共值替换数据,但该列不是唯一的,因此无法使用replace,这将非常有用

  • 这将是一个艰难而细致的过程。大多数专业软件开发项目都在为此而挣扎。他们必须非常小心地为表中的每个更改编写脚本,并使用“模式迁移”工具对任何数据库应用增量更改,以便将目标数据库升级到任何版本


    但是,在开发过程中完成了一系列的增量更改之后,试图找出所有这些增量更改就像试图解烤蛋糕一样。

    您的新数据库中是否有数据?是的,事实上,我必须将其保存在那里,因为它保存着敏感/加密的信息。当我编写“新数据库”时我不是说你的系统目前在线。是的,我知道了,答案仍然是肯定的。所以你在生产和开发数据库中都有有有价值的数据?这个答案使用Microsoft SQL Server语法,尽管承认OP使用的是MySQL。对于Microsoft用户来说,不了解其他数据库产品的存在或其他产品具有不同语法是很常见的。