如何使用CSV上传插入一些常见数据?

时间:2013-07-15 04:19:06

标签: php mysql wordpress csv

使用CSV上传功能,我可以将所有重复数据上传到MySQL数据库。假设我有一些字段,如:

+------+-------+-----+--------+
| Year | Month | Day | Figure |
+------+-------+-----+--------+
  2012    01      01     200
  2012    01      02     303
  2012    01      03     632
  ...
  2012    01      31     323
+------+-------+-----+--------+

在我的数据表中,我有两个共同点:

CSV对我的作用是:

2012,01,01,200
2012,01,02,303
2012,01,03,632
...
2012,01,31,323

年份和月份字段中的纯重复。如果我们可以通过CSV中的任何方式使这两个字段相同,那么输入用户就会好得多。

所以底线是:

  • 我们如何使用CSV上传来插入一些常见的字段而不是输入?

2 个答案:

答案 0 :(得分:0)

正如@ DevZer0建议的那样,CSV不是空字段(或缺少字段)的好选择。

如果您想使用基于文本的解决方案,可以尝试使用JSON / XML。

如果您想使用托管方法,可以尝试使用DBMS,例如MySQL / MSSQL。

或者上面的混合,SQLite,一个基于文件的数据库系统。

答案 1 :(得分:0)

我无法真正说明这将如何与你所说的wordpress插件集成,但是采用一种技术,其中空白列填充了前一条记录的值,你可以做这样的事情(假设有一个标题csv文件中具有唯一字段名称的行。)

<?php
$fp = fopen($csvFile, "r");
// get the header line

$header = fgetcsv($fp);
// seed the previous record array
$previousRec = array_combine($header, array_fill(0, count($header), ""));

while ($row = fgetcsv($fp)){
    $row = array_combine($header, $row);
    // filter with a closure requires php 5.3
    $filtered = array_filter($row, function($a){ return trim($a) !== "";});

    // merge the new data on top of the old with filtered values gone.
    $row = array_merge($previousRec, $filtered);

    // do something with row

    // store the row as the previousRec for the next time arround.
    $previousRec = $row;
}