mysql中,2个不同数据,同一结构的表,如何合并数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中,2个不同数据,同一结构的表,如何合并数据相关的知识,希望对你有一定的参考价值。
您好.mysql中,2个不同数据,同一结构的表,如何合并数据。
1、合并的规则是什么,用主键?主键重复如何处理;
2、你备份的是什么格式的文件,SQL语句?导入到MYSQL中再做处理;
3、详细说明,贴出相关文本内容。
关键看表中是否有冲突,比如主键是否重复,是否有自增长字段
如果没有的话,就简单恢复数据,或者恢复在两张表里,再insert即可 参考技术A 备份出的结果是什么样?
SQL脚本文件?如果是的话,则可以直接把文件合并处理一下。
对我有用[0]丢个板砖[0]引用举报管理TOPWWWWA(aaaa)等
级:21215 参考技术B MySQL InnoDB 表数据页或者二级索引页(简称数据页或者索引页)的合并与分裂对 InnoDB 表整体性能影响很大;数据页的这类操作越多,对 InnoDB 表数据写入的影响越大。
MySQL 提供了一个数据页合并临界值(MERGE_THRESHOLD),在某些场景下,可以人为介入,减少数据页的合并与分裂。
在 InnoDB 表里,每个数据页默认16K 大小,默认 MERGE_THRESHOLD 值为 50,取值范围从 1 到 50,默认值即是最大值。也就是当页面记录数占比小于 50% 时,MySQL 会把这页和相邻的页面进行合并,保证数据页的紧凑,避免太多浪费。
JPA,如何使用同一个类(实体)来映射不同的表?
【中文标题】JPA,如何使用同一个类(实体)来映射不同的表?【英文标题】:JPA, How to use the same class (entity) to map different tables? 【发布时间】:2010-11-03 02:09:03 【问题描述】:我有两张桌子:Ta
和 Tb
。它们的表结构完全相同,但表名不同。
我尝试创建一个实体类来映射表结构。我的一些常用应用程序模块将使用这个实体类根据参数动态查询和更新Ta
或Tb
。可以在JPA中完成吗?如何编写程序在运行时将实体类动态映射到不同的表?
【问题讨论】:
【参考方案1】:不确定是否可以完全按照自己的意愿进行操作,但可以使用继承来产生相同的结果。
AbsT 包含所有字段,但没有 @Table 注释
Ta 和 Tb 继承自 AbsT 并且每个都有一个 @Table 注释
使用
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
在摘要中。
示例代码:
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class abstract AbsT
@Id Long id;
...
@Entity
@Table(name = "Ta")
public class Ta extends AbsT
...
@Entity
@Table(name = "Tb")
public class Tb extends AbsT
...
【讨论】:
它确实有效,谢谢!但是,对于 Toplink,不支持 TABLE_PER_CLASS。我尝试了@mappedSuperClass 方法,它也能正常工作。 对于那些不确定 Inheritance 与 MappedSuperClass 的人,这里对它们进行了很好的描述和比较:***.com/a/9669719/2278186【参考方案2】:创建一个带有注解@MappedSuperclass 的抽象类(模板类),然后扩展它。扩展的每个类都使用@table、@entity 注释并且只包含一个空的构造函数。所有代码都将在您的父类中。 在您的方法上使用泛型指示您的参数实体从 templateClass 扩展,并且不需要更多的代码更改。正确的映射将在您传递的每个儿子中。
【讨论】:
通常,Son 与 Child 有 IS-A 关系。【参考方案3】:如果您使用两个不同的持久性单元,您也可以在不使用子类的情况下执行此操作。
每个持久性单元都可以指定一组唯一的映射(包括表名)。实现此目的的一种方法是创建两个 orm.xml 文件。在 persistence.xml 中你需要这样的东西:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.0">
<persistence-unit name="mapping-1">
. . .
<mapping-file>orm-1.xml</mapping-file>
. . .
</persistence-unit>
<persistence-unit name="mapping-2">
. . .
<mapping-file>orm-2.xml</mapping-file>
. . .
</persistence-unit>
</persistence>
然后在 orm-1.xml 中:
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"
version="1.0">
<package>mypackage</package>
<entity name="myEntity" class="myClass">
<table name="TABLE1">
</table>
</entity>
</entity-mappings>
在 orm-2.xml 中:
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"
version="1.0">
<package>mypackage</package>
<entity name="myEntity" class="myClass">
<table name="TABLE2">
</table>
</entity>
</entity-mappings>
您需要为每个 PersistenceUnit 创建一个单独的 EntityManagerFactory(可能不是您想要的),但如果您想在不同的数据库(具有不同的表名)上使用相同的类,这将是一种方法。
【讨论】:
以上是关于mysql中,2个不同数据,同一结构的表,如何合并数据的主要内容,如果未能解决你的问题,请参考以下文章
如何将两个同样的MYSQL数据库表合并。表一表二的表结构是一样只是内容一个表多了些并且有部分字段修改过