我想用php解析非常大的csv到mysql。我的想法是执行4-5次请求,将数据粘贴到mysql中,之后每个迭代请求应该从尚未粘贴的行开始(一个请求迭代脚本可以覆盖400行)。但是我不知道要跳过已经粘贴到数据库中的csv中的行。也许我应该检查表中的行数,然后用这个数字定义一些变量并根据它进行迭代。但我不知道如何使用foreach操作csv,我只有代码中带有“while”的代码。 这是我目前的代码:
public function action_index(){
if(($handle = fopen('data_wpic.csv', 'r')) !== false)
{
$header = fgetcsv($handle);
while(($data = fgetcsv($handle)) !== false)
{
$model = ORM::factory('Drug');
$image_path = $data[18];
if(strlen($image_path) > 5) {
$path= 'drug_images/' . $image_path;
$image = ORM::factory('Image')->remote($path);
if ($image) {
$model->image_id = $image;
unlink($path);
}
}
$model->drugGenericName = $data[17];
$model->drugForm = $data[4];
$model->drugProperties = $data[7];
$model->drugIndication = $data[2];
$model->drugDosage = $data[13];
$model->drugSide = $data[11];
$model->drugContrIndication = $data[12];
$model->drugInteractions = $data[15];
$model->drugSpecial = $data[0];
$model->drugExpiry = $data[3];
$model->drugRealCondition = $data[8];
$model->tradeName = $data[16];
$model->save();
unset($data);
}
fclose($handle);
}
}
我的网页托管有限,这就是我尝试解决此例程的原因 如果有人知道更好的方法 - 我会很高兴听到他