mysql - MariaDB,使用降级版表结构导出数据

标签 mysql database mariadb

我有同一应用程序的 2 个 MariaDB 数据库架构。一个是应用程序 V1 的架构,另一个是 V2 的架构。

V2架构有大量测试数据。我正在设置应用程序 V1 的测试环境,它需要 V1 数据库架构,但希望将所有测试数据包含在 V2 架构中。

大多数情况下,V2 架构是 V1,但有更多的列和表。

有没有办法通过告诉工具(例如 mysqldump)我希望它使用 V1 表结构来从 V2 模式导出数据,以便它忽略丢失的列和表。

最佳答案

Mysqldump 没有您所描述的选项。

有一个选项--insert-ignore,它会导致mysqldump的输出包含一系列INSERT IGNORE语句。但这不会达到您想要的效果。

INSERT IGNORE 的结果是,如果 INSERT 失败,它会跳过这些行。但您希望它插入行,而不在 V2 转储中插入额外的列。

恐怕您的选择是:

  • 在 V2 数据库上更改 TABLE 以匹配 V1 架构的表和列,然后转储数据。

  • 恢复 V2 数据库,包括额外的表和列,然后通过 ALTER TABLE 删除多余的表和列。

  • 编写您自己的工具,其工作方式类似于 mysqldump,只不过您需要指定每个表要转储的列。

关于mysql - MariaDB,使用降级版表结构导出数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56928339/

相关文章:

python - 在 Django 中,如何为每个线程创建一个数据库连接

jdbc - Spark SQL JDBC 只返回列名

mysql - 无法从 vibed 应用程序连接到 MySQL/MariaDB 数据库

mysql - 如何使用选择 AND

mysql - 多个 MySQL 版本

php - 远程使用 MySqlDump 时 MySql 表锁定?

php - 尝试消除 MYSQL 临时表,并在可能的情况下将流程合并到一条语句中

php - 在Codeigniter中: How to get url if i clicked on the fetched data from database

python - 在 Django 模型中存储项目类别和子类别的最佳方式

php - 如何在 mariadb 中使用 -> 运算符查询 JSON 列