在Excel for MySQL导入中为每列创建新行

时间:2015-03-02 11:37:03

标签: mysql excel

我有一个旧数据库,我需要迁移到我的新设置。

当前的一个信息包含一个人的信息,其中5列表示一个人与其年龄相关的孩子数量。

这是我的Excel转储:

id  child1  child2  child3  child4  child5
-------------------------------------------
39    30                
41    33      30      21

我需要将其转换为多行,以便我可以将其导入到我的新表中(birthyear = 2014-age)。

这是我的关系表在上面的示例中的样子:

birthyear   person_id
---------------------
1984           39
1981           41
1984           41
1993           41

是否可以使用一些公式在Excel中完成此操作?

数据库(excel表)包含超过40 000个条目,其中大多数条目根本没有孩子(child1-5 NULL)。

我正在使用Excel for Mac 2011 v14.1。

1 个答案:

答案 0 :(得分:0)

正如所建议的,我在MySQL而不是Excel中解决了我的问题。

我清理了我的excel文件并创建了一个临时表:

CREATE TABLE `person` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `child1` int(11) DEFAULT NULL,
  `child2` int(11) DEFAULT NULL,
  `child3` int(11) DEFAULT NULL,
  `child4` int(11) DEFAULT NULL,
  `child5` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

然后我将数据导入到此表中,并通过导出所有5列的查询结果解决了所有问题,如下所示:

SELECT id, (2014-child1) AS birthyear FROM person WHERE child1 IS NOT NULL;
....
SELECT id, (2014-child5) AS birthyear FROM person WHERE child5 IS NOT NULL;

现在我得到5个.csv,我可以合并或逐个导入。