我有一個CSV文件看起來像這樣解析CSV和進口到PHP慢
col1, col2, col3
1 , John, ABC
我需要在第3列解析ABC
到A,B,C
,因爲新的關係需要col1, col3 (each letter)
。
$j
是行,$i
是列。
$j = 0;
while (($row = fgetcsv($handle, 1000, ',')) !== false) {
$i = 0;
$id = 0;
foreach ($row as $field) {
# save the id of each row
if($j >0 && $i == 0){
$id = $field;
}
# parse the third column for non-header rows)
if($j > 0 && $i >= 3){
$char_array = str_split($field);
foreach($char_array as $value){
//echo $value;
//echo $id.$value."<br/>";
mysql_query("INSERT INTO sample VALUES('".$id."', '".$value."')");
}
}
$i = $i + 1; # increment the column
}
$j = $j +1; # move to the next row
}
這是緩慢的。我有超過720行,其中大多數在第三列中有超過5個字符。
ABCDE
,所以平均我們有720 x 5。這是一個巨大的數字。 我得到timeout
。我可以更改本地執行的最大時間,但我需要在我的學生linux帳戶上運行此操作。我沒有那種特權。我懷疑是因爲超時(這次沒有說),我有
id = 502
。我錯過了其餘的(我有多達720行)。
我該怎麼辦?我只對第一和第三列感興趣。
爲什麼不使用內置的CSV功能,PHP的?fgetcsv(),str_getcsv() – 2012-05-20 19:29:42
你的意思是'LOAD DATA'?或'fgetcsv'?我需要解析它們?我認爲這很難解析。 – user1012451
@Dagon我有'fgetcsv'。那是我如何閱讀csv文件。 – user1012451