将数据透视表模板从csv(Excel)移动到MySQL
我通常使用数据透视表手工从原始数据中手动添加多个列,然后在字段中使用数据透视表并填充它,从Excel中手动准备报告和图表。
我想看看这是否可以通过以下方式实现自动化:
a)将数据加载到mysql数据库中
b)使用几个查询来添加额外的列,然后准备好可供使用的数据
c)图表API / JQuery。
由于我知道csv到mysql更容易,我现在有CSV格式的原始数据文件。
原始数据主要包含不同的字段,主要是时间,date时间和string。
使用PHP脚本,我可以使用LOAD DATA LOCAL INFILE
命令加载这些数据。
根据date,我需要准备一个说y个月的月份,这个月份的月份列必须根据date字段更新月份名称('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分钟”的列a和一个表示“持续时间> 5分钟<10分钟”的列b,如果它落在范围内,我会放置一个数值“1”。
我研究了自我join的例子,但是在我的情况下,尽pipe做了很多努力,我仍然无法实现。
我需要一些帮助才能让我走,因为我的信念是,与所有相关列的表比在运行时使用查询更好。 另外,是最好格式化数据,并将其加载到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错误/约束。 解决方法根本没有帮助
与需要手动格式化的Excel不同,我发现使用查询来查询数据库要容易得多
这解决了这个问题
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行? 我如何优化它。