健全性チェックを試みているかなり大きなcsvファイル(17GB)があります。私は次のような小さなスクリプトを書きました:
#!/usr/bin/php
<?php
$f = fopen($argv[1],'r');
$i=0;
while (!feof($f)) {
$row = fgetcsv($f);
$i++;
}
print $i."\n";
?>
行数を読み込んで出力するだけです。このスクリプトの出力:60770881
しかし、私がそうするとwc -l
、結果は60777200になります。
私のcsvファイルはMySQLから以下を使用して生成されました:
INTO OUTFILE '/tmp/file.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n'
したがって、エスケープされていない改行などは含まないでください。誰かが何が間違っている可能性があるか考えていますか?