【发布时间】:2017-06-30 16:06:04
【问题描述】:
我想将不同 CSV 文件中的数据导入 MySQL。 (不同的文件包含不同位置的必填列,但所有文件的标题值相同)
有些 CSV 文件是这样的;
-------------------------------------------------
| Name, Father Name, Contact, City, email, |
-------------------------------------------------
| Ali, Ahmed, 123456, isb. , ali@mail.com, |
| Fazi, Khan, 123456, hyd. , faiz@ymail.com, |
-------------------------------------------------
有时 CSV 文件是这样的;
-------------------------------------------------
| Name, Father Name, Contact, email, City, |
-------------------------------------------------
| Ali, Ahmed, 123456, ali@mail.com, isb. , |
| Fazi, Khan, 123456, faiz@ymail.com, hyd. , |
-------------------------------------------------
在探索和研究了许多建议后,我得到了这个解决方案。 但我不知道如何使用此代码在数据库中插入数组行。
$names = array('Name', 'Father Name', 'contact', 'email');
$picked = array();
$theData = array();
$isFirstRow = true;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$numCols = count($data);
$row = array();
// first row to select columns for extraction
if($isFirstRow) {
for($c=0; $c<$numCols; $c++)
if(!in_array($data[$c], $names)
continue;
else
$picked[] = $c;
$isFirstRow = false;
}
// process remaining rows
else {
for($c=0; $c < $numCols; $c++)
if(in_array($c, $picked))
$row[] = $data[$c];
$theData[] = $row;
}
}
fclose($handle);
}
请帮助我如何根据 $names[] 在 MySQL 中插入 $theData[] 的数据。 提前谢谢你:)
【问题讨论】:
-
你考虑过在 MySQL 中使用
LOAD DATA LOCAL INFILE查询吗? -
@Barmar 感谢您的回复,我认为
LOAD DATA LOCAL INFILE无法加载特定列,如果可以,请告诉我。