2013-07-15 29 views
-4

使用CSV上傳功能,我可以將所有重複數據上傳到我的MySQL數據庫。假設我有這樣一些領域:如何使用CSV上傳插入一些常用數據?

 
+------+-------+-----+--------+ 
| 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 

A pure rep在年和月領域都吃。如果我們可以通過任何方式使這兩個字段在CSV中共同使用,那麼對於輸入用戶來說會更好。

所以,底線是:

  • 我們如何可以插入一些公共字段以更少的投入使用CSV上傳?
+0

爲什麼**所有帽子和全部** **? – Raptor

+0

沒什麼不尋常的。 :)這只是我的一種風格。強調主要問題。 :)我們最好在主題上發言。 –

+3

切換到不同的數據格式。像'xml' – DevZer0

回答

0

正如@ DevZer0所示,CSV不是空字段(或缺少字段)的好選擇。

如果您想使用基於文本的解決方案,您可以嘗試使用JSON/XML。

如果您想使用託管方法,您可以嘗試使用DBMS,例如, MySQL/MSSQL。

或者上面的混合,SQLite,一個基於文件的數據庫系統。

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; 
}