【问题标题】:How to perform mathematical operation on data from CSV File? [closed]如何对 CSV 文件中的数据进行数学运算? [关闭]
【发布时间】:2013-11-30 12:30:03
【问题描述】:

我有 125 列的 csv 文件

指示性 125 列是: ROLL_NO、SCHOOL_ID、NAME、STANDARD、SOURCE_ID、Q1、Q2、Q3(一直持续到)Q120

CSV 文件有大约 20,0000 条记录(适用于各种学校)

我想计算对 CSV 文件中存在的数据执行一些数学运算。预期的操作是:

  • 求平均值
  • 查找最高分(每所学校)
  • 特定列的数据求和

目前我正计划将此 CSV 加载到数据库中并执行所需的操作;在开始之前我有几个问题;

  • 是否有任何替代方法可以使用 PHP 执行数学运算(无需加载到数据库中)
  • 如何将 csv 中的列存储为数据库表中的行(从 Q1 到 Q120)

【问题讨论】:

  • 加载到电子表格中然后进行所有数学运算不是更容易吗?如果这是一项经常性的任务,您还可以设置一些宏来为您完成整个任务。
  • @jeff 感谢您的建议,csv 数据处理是自动化过程的步骤之一;所以不幸的是,我将无法手动输入电子表格...

标签: php mysql csv phpmyadmin fgetcsv


【解决方案1】:

由于 CSV 是没有任何索引的纯文本文件,因此对其进行的任何操作都需要至少一次完整读取文件。如果你有足够的RAM,你可以将文件读入数组到PHP中并在内存中执行操作,如果你连续执行多个操作会稍微快一些。

但是,如果您打算进行更严格的计算,我建议您将数据加载到具有索引的数据库中,例如 MySQL,这样您可以更快地执行此类操作。

【讨论】:

  • 在我的 csv 中,我有 120 个问题 Q1 到 Q120 ;我想对此数据执行一些操作,是否有任何建议将 CSV 数据分成两个表:1)表 1 存储前五个字段 2)表 2 存储 120 个问题和卷号?
【解决方案2】:

这是你想要的吗?这可以自动化。

1。将 csv 拆分为两个文件

使用awkcut,可以按列拆分。

tbl1.csv 将包含从 column1 到 column5 的数据 tbl2.csv 将包含数据 column1 (ROLL_NO) 以及从 column6 到 column 125

$ cut -d "," -f1-5 input.csv > tbl1.csv
$ cut -d "," -f1,6-120 input.csv > tbl2.csv

2。使用LOAD DATA 将 csv 加载到表中

我假设你已经知道LOAD DATA

小心在数据中转义“,”。 CSV 没有标准的转义方式。如果你的csv只有数字,转义可能不是问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 2014-03-08
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多