使用 php 从 CSV 文件中仅提取 3 个值
Extract only 3 values from a CSV file using php
我有一个包含 9500 行的 csv 文件,每行有 10 个值。
我只想从每一行向数据库提供 3 个值。如何使用 PHP.
实现此目的
1,"Goroka","Goroka","Papua New Guinea","GKA","AYGA",-6.081689,145.391881,5282,10,"U","Pacific/Port_Moresby"
2,"Madang","Madang","Papua New Guinea","MAG","AYMD",-5.207083,145.7887,20,10,"U","Pacific/Port_Moresby"
3,"Mount Hagen","Mount Hagen","Papua New Guinea","HGU","AYMH",-5.826789,144.295861,5388,10,"U","Pacific/Port_Moresby"
我只需要将每行的第 1、5 和 8 个值保存到数据库中。
我尝试分解每一行,然后从数组中获取每个值并循环遍历每一行。但这需要时间。我正在寻找更好的方法。
您可以使用 fgetcsv()
获取每一行数据并在循环中提取所需的值,如下所示:
// setup pdo statement and bind parameters outside of the loop
$field1 = "";
$field2 = "";
$field3 = "";
$pdo_stmt = $db->prepare("INSERT INTO <table> VALUES(?,?,?)");
$pdo_stmt->bind_param(1, $field1, PDO::PARAM_INT);
$pdo_stmt->bind_param(2, $field2, PDO::PARAM_STRING);
$pdo_stmt->bind_param(3, $field3, PDO::PARAM_STRING);
// try to open the csv file containg the data
$fp = fopen("file.csv", "r");
// loop through each row
while($row = fgetcsv($fp) {
// store field 0, 4 and 7 from each row
$field1 = $row[0];
$field2 = $row[4];
$field3 = $row[7];
// insert into database
$pdo_stmt->execute();
}
// close the file
fclose($fp);
当然以上仅作为示例,您应该检查文件是否真的可以打开等等。如果您使用的是准备好的语句,请注意您应该准备语句并将参数绑定到循环外部以提高性能。
我有一个包含 9500 行的 csv 文件,每行有 10 个值。
我只想从每一行向数据库提供 3 个值。如何使用 PHP.
实现此目的1,"Goroka","Goroka","Papua New Guinea","GKA","AYGA",-6.081689,145.391881,5282,10,"U","Pacific/Port_Moresby"
2,"Madang","Madang","Papua New Guinea","MAG","AYMD",-5.207083,145.7887,20,10,"U","Pacific/Port_Moresby"
3,"Mount Hagen","Mount Hagen","Papua New Guinea","HGU","AYMH",-5.826789,144.295861,5388,10,"U","Pacific/Port_Moresby"
我只需要将每行的第 1、5 和 8 个值保存到数据库中。
我尝试分解每一行,然后从数组中获取每个值并循环遍历每一行。但这需要时间。我正在寻找更好的方法。
您可以使用 fgetcsv()
获取每一行数据并在循环中提取所需的值,如下所示:
// setup pdo statement and bind parameters outside of the loop
$field1 = "";
$field2 = "";
$field3 = "";
$pdo_stmt = $db->prepare("INSERT INTO <table> VALUES(?,?,?)");
$pdo_stmt->bind_param(1, $field1, PDO::PARAM_INT);
$pdo_stmt->bind_param(2, $field2, PDO::PARAM_STRING);
$pdo_stmt->bind_param(3, $field3, PDO::PARAM_STRING);
// try to open the csv file containg the data
$fp = fopen("file.csv", "r");
// loop through each row
while($row = fgetcsv($fp) {
// store field 0, 4 and 7 from each row
$field1 = $row[0];
$field2 = $row[4];
$field3 = $row[7];
// insert into database
$pdo_stmt->execute();
}
// close the file
fclose($fp);
当然以上仅作为示例,您应该检查文件是否真的可以打开等等。如果您使用的是准备好的语句,请注意您应该准备语句并将参数绑定到循环外部以提高性能。