我想合并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
答案 0 :(得分:1)
没有简单的方法可以做到这一点。
您可以尝试在不同的数据库中更改表格,使它们采用最相似的格式。
此外,您可以使用
等语句Create table as select
以进一步格式化数据。
您必须对所有数据库执行MYSQL DUMP。 从您感兴趣的数据库模式中仅选择create语句,并从所有不同的数据库中添加插入语句(对于数据)。
您可能还需要在Excel中执行文本操作,或者使用mysql执行文本操作,以便以兼容的格式获取数据,并将其插入到最终模式中。
答案 1 :(得分:1)
任何ETL工具,如Clover,都非常适合您的目的。只需定义列映射,你就应该好好去。如果您需要进一步的帮助,请发表评论。
答案 2 :(得分: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。
CREATE TABLE user LIKE user1;
ALTER TABLE user
ENGINE=Mrg_MyISAM
UNION=(user1,user2,user3,user4,user5)
;
试一试!!!