我想将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发布于 2013-05-22 05:42:32
如果表与列名/类型完全相同,并且命名为
有两种方法可以处理此问题:
方法#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)
;试一试吧!
发布于 2013-05-22 02:31:30
没有简单的方法可以做到这一点。
您可以尝试更改不同数据库中的表,使其采用最相似的格式。
此外,您还可以使用以下语句
Create table as select以便进一步格式化数据。
而不是对所有数据库进行MYSQL转储。只从您感兴趣的数据库模式中选择create语句,然后添加来自所有不同数据库的insert语句(用于数据)。
您可能还必须在Excel中或在mysql中执行文本操作,以便以兼容的格式获得数据,并且可以将其插入到最终的架构中。
发布于 2013-05-22 02:35:00
任何ETL工具,如Clover,都非常适合您的目的。只需定义列映射,就可以了。如果您需要进一步的帮助,请留下评论。
https://stackoverflow.com/questions/16676937
复制相似问题