2014-04-25 70 views
1

我通常使用數據透視表從原始數據中手動添加多個列,然後在字段中使用數據透視表並填充它,手動從Excel中準備報告和圖表。將數據透視表模板從csv(Excel)移動到MySQL

而且我想看看是否可以通過自動化:

一)加載數據到MySQL數據庫
b)使用幾個查詢添加額外列,然後準備數據準備被使用
c)圖表API/JQuery。

因爲我知道csv到mysql比較容易,所以我現在有了CSV格式的原始數據文件。

原始數據基本上包含不同的字段,主要是時間,日期時間和字符串。

使用PHP腳本,我可以使用LOAD DATA LOCAL INFILE命令加載這些數據。

根據日期,我需要準備一個說明月份和本月列的月份名稱('jan'等),根據日期字段(yyyy-mm-dd hh:mm:ss)在某個x列中更新同一張桌子。

或者只是使用和參考的圖表(不知道有多複雜,這將是): -

mysql> select count(*) as Count, monthname(date) from alerts; 
+-------+---------------------------------+ 
| Count | monthname(date) | 
+-------+---------------------------------+ 
| 24124 | March       | 
+-------+---------------------------------+ 
1 row in set (0.19 sec) 

同樣,我需要的列的,上面寫着「時間<5分鐘」和列b表示「持續時間> 5分鐘< 10分鐘」,如果它落在範圍內,我會將數字值設置爲1。

我看了一下自我加入的例子,但是在我的情況下,儘管做了幾次努力,但我卻無法使它工作。

我需要一些幫助才能讓我走,因爲我的觀點是,包含所有相關列的表比在運行時使用查詢更好。 此外,它是更好的先格式化數據並將其加載到MySQL或加載數據並格式化它? 請讓我知道。

感謝

UPDATE1

好,我知道這與自合作加盟如下

UPDATE t1 p1 INNER JOIN (select monthname(dt_received) AS EXTMONTHNAME from t1)p2 SET  p1.MONTH=p2.EXTMONTHNAME; 

但爲什麼它更新所有的一個月,當月的名字,即使dt_received還有其他幾個月嗎? 有人可以幫忙嗎?

Update2 再次,仍然掙扎,我被告知1093錯誤/約束。變通辦法是根本沒有幫助

回答

0

不像Excel中是在需要手動格式,我發現很多查詢的數據庫使用queryies容易

這解決了這個問題

UPDATE tablename p1 INNER JOIN (select monthname(dt_received) AS EXTMONTHNAME from tablename)p2 SET p1.MONTH=p2.EXTMONTHNAME where monthname(p1.dt_received)=p2.EXTMONTHNAME; 

但會有人知道,爲什麼需要接近14分鐘改變36879行? 如何對其進行優化。