如何读取csv中的数据并上传到Mysql

时间:2013-08-28 08:14:03

标签: php mysql parsing

我在csv中有一个文件,其格式如下:

"**Table1"
"*Field1","*Field2","*Field3","*Field4"
"Data1","Data2", "Data3", "Data4"

"**Table2"
"*Field1","*Field2","*Field3","*Field4"
"Data1","Data2", "Data3", "Data4"

我希望程序可以识别表1/2并将数据上传到mysql预定义表。我打算用PHP。有没有人试过这样做?我正在寻找一个例子和方法!谢谢。

2 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

$handle = fopen("./myfile.csv", "r");
if ($handle === FALSE) {
  exit();
}
// ignore header
fgetcsv($handle, 1000, ",");

// generate SQL query
$sql = "INSERT INTO `mytable` (col1, col2, ...) VALUES ";
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
  $sql .= '("'.$data[0].'", "'.$data[1].'", "'.$data[2].'", ...),';
}
$sql = substr($sql,0,strlen($sql)-1).';';
// then execute your query

<强> EDITED

答案 1 :(得分:0)

这个库可能会让你更轻松:https://code.google.com/p/php-csv-parser/。我在最近的项目中使用它,我需要解析CSV并插入MySQL数据库。

您可以使用$csv->getCell($x, $y)选择要插入的表格,其中$x$y将单元格指向"Table1""Table2"

所以你可以这样做:

$table_name = $csv->getCell($x, $y);
if( $table_name === "Table1" ) {
   // code to insert into table 1
} else if( $table_name === "Table2" ) {
   // code to insert into table 2
}