如何合并5个相同的MySQL表?

时间:2013-05-21 18:26:22

标签: mysql

我想合并5个相同的架构(好吧,它们不完全相同,但我可以编辑字段名称使它们相同)将MySQL数据库合并到一个数据库中。有什么简单的方法吗?

CREATE TABLE `users` (
    `name` VARCHAR (50) COLLATE utf8_turkish_ci DEFAULT NULL,
    `surname` VARCHAR (50) COLLATE utf8_turkish_ci DEFAULT NULL,
    `telephone` VARCHAR (50) COLLATE utf8_turkish_ci DEFAULT NULL,
    PRIMARY KEY (`id`),

) ENGINE = MyISAM AUTO_INCREMENT = 1000 DEFAULT CHARSET = utf8 COLLATE = utf8_turkish_ci PACK_KEYS = 0 ROW_FORMAT = DYNAMIC

3 个答案:

答案 0 :(得分:1)

没有简单的方法可以做到这一点。

您可以尝试在不同的数据库中更改表格,使它们采用最相似的格式。

此外,您可以使用

等语句
Create table as select

以进一步格式化数据。

您必须对所有数据库执行MYSQL DUMP。 从您感兴趣的数据库模式中仅选择create语句,并从所有不同的数据库中添加插入语句(对于数据)。

您可能还需要在Excel中执行文本操作,或者使用mysql执行文本操作,以便以兼容的格式获取数据,并将其插入到最终模式中。

答案 1 :(得分:1)

任何ETL工具,如Clover,都非常适合您的目的。只需定义列映射,你就应该好好去。如果您需要进一步的帮助,请发表评论。

答案 2 :(得分:1)

如果表格与列名称/类型完全相同,则命名为

  • 用户1
  • 用户2
  • 用户3
  • USER4
  • USER5

有两种方法可以解决这个问题:

APPROACH#1:将数据加载到一个表

CREATE TABLE user LIKE user1;
INSERT INTO user (name,surname,telephone,...)
SELECT name,surname,telephone,... FROM user1;
INSERT INTO user (name,surname,telephone,...)
SELECT name,surname,telephone,... FROM user2;
INSERT INTO user (name,surname,telephone,...)
SELECT name,surname,telephone,... FROM user3;
INSERT INTO user (name,surname,telephone,...)
SELECT name,surname,telephone,... FROM user4;
INSERT INTO user (name,surname,telephone,...)
SELECT name,surname,telephone,... FROM user5;

如果id为auto_increment,则所有行都会获得新的ID。

方法#2:Use the MERGE Storage Engine

CREATE TABLE user LIKE user1;
ALTER TABLE user
    ENGINE=Mrg_MyISAM
    UNION=(user1,user2,user3,user4,user5)
;

试一试!!!