2015-03-02 35 views
0

我有一箇舊數據庫,需要遷移到我的新安裝程序。在Excel中爲MySQL列的每一列創建新行

當前人持有關於一個人的信息,其中5列表示一個人與他們的年齡有多少孩子。

這裏是我的Excel的轉儲:

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

我需要將其轉換成多行,這樣我可以將其導入到我的新表(與birthyear = 2014年齡)。

這是我的關係表應該怎麼看起來像從上面的例子:

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

你可以在Excel中轉​​換它,但我認爲最好在舊錶上構建一個查詢來返回新格式的數據 – BrakNicku 2015-03-02 12:01:16

+0

這是一個好主意,我猜!問題是我只有在Excel中獲得數據庫。但我想我可以創造一些臨時的東西來完成這個任務。希望有一個更簡單的解決方案 – Amiga 2015-03-02 12:06:07

回答

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文件,我可以合併或逐個導入。

+1

使用UNION ALL來組合查詢並獲得1個結果 – BrakNicku 2015-03-02 14:34:41