【问题标题】:Moving Pivot Table template from csv(Excel) to MySQL将数据透视表模板从 csv(Excel) 移动到 MySQL
【发布时间】:2014-04-25 07:15:14
【问题描述】:

我通常使用数据透视表手动从 excel 中准备报告和图表,从原始数据中手动添加几列,然后在字段上使用数据透视表并填充它。

我想看看这是否可以通过以下方式自动化:

a) 将数据加载到 mysql 数据库中
b) 使用多个查询来添加额外的列,然后准备好供
使用的数据 c) 图表 API/JQuery。

因为我知道 csv 到 mysql 更容易,我现在有了 CSV 格式的原始数据文件。

原始数据基本上包含不同的字段,主要是时间、日期时间和字符串。

使用 PHP 脚本,我能够使用 LOAD DATA LOCAL INFILE 命令加载这些数据。

根据日期,我需要准备一个表示月份的 y 列,并且必须根据某些 x 列上的日期字段(yyyy-mm-dd hh:mm:ss) 使用月份名称('jan' 等)更新此月份列在同一张表中。

或者也许只是使用它并在图表中引用(不确定这会有多复杂):-

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

同样,我需要一列 a 表示“持续时间 5 分钟

我查看了自联接示例,但经过多次努力,我无法使其在我的案例中发挥作用。

我需要一些帮助才能让我继续前进,因为我认为包含所有相关列的表比在运行时使用查询要好。 另外,先格式化数据并将其加载到mysql还是加载数据并格式化更好? 请告诉我。

谢谢

更新1

好的,我通过下面的自我加入来完成这项工作

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

但是为什么即使 dt_received 有其他月份,它也会使用相同的月份名称更新所有月份? 有人可以帮忙吗?

更新2 再次,仍在挣扎,我意识到 1093 错误/约束。变通办法根本没有帮助

【问题讨论】:

    标签: php mysql excel csv


    【解决方案1】:

    与需要手动格式化的 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;
    

    但是有人知道,为什么更改 36879 行需要将近 14 分钟? 如何优化它。

    【讨论】:

      猜你喜欢
      • 2020-03-22
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多