#1 gnuser
由于项目需要,必须实现将EXCEL数据存入MYSQL数据库中。为此花费了大量时间去百度、去谷哥。太专业的目前未能弄懂,SP带的那个暂时在测试时出现EXCEL中 有大量数据时报错的情况,未能使用上。于是只能另找办法,终于找到了应用PHP文件处理+SP保存数据相结合的方法。
此方法我相信比较适合初学的朋友。
也请各位高手们多指教
EXCEL文件结构:(1)列:学校、班、学号、姓名、语文成绩、语文排名、数学成绩、数学排名 //当然实际数据不止这些,共有33项
另存为book1.csv //取用csv格式,用逗号作分隔符这种,在TXT下打开如下:XX中学,107,0402091071827,沈XX,82,68,97,38
(2)行:全级学生的记录 //我做的数据记录有1550条。
mysql数据库:scores数据表,有字段:id、school、class、student_id、name、chinese、chinese_ranking、math、math_ranking //与EXCEL一一对应
程序代码:
model下scores.php
var $pk=id;
var $table=scores;
}
?>
controller下main.php代码
class main extends spController{
public function scores(){
$row = 1;//行数,从第1行开始
$handle = fopen("Book1.csv","r");//打开文件,文件地址请自己更改
while ($data = fgetcsv($handle,'',",")) { //PHP有自带的分析.csv函数:fgetcsv(要查的文件,每行最大的长度,字段分界符),按行循环
$num = count($data);//每行字段数,在本程序中不必要,可去掉,以下是重点
//由于EXCEL字段无法与MYSQL字段完全对应,只能用数组方法重新给变量成绩chengji赋值
$chengji=array(
'school'=>$data[0],
'class'=>$data[1],
'student_id'=>$data[2],
'name'=>$data[3],
'chinese'=>$data[4],
'chinese_ranking'=>$data[5],
'math'=>$data[6],
'math_ranking'=>$data[7],
);
//写入MYSQL语句
$scores=spClass("scores");
$scores->create($chengji);
$row++;//按行数递增循环
}
fclose($handle);
}
}
?>
本地运行程序成功输入,1550条记录用时半分钟左右。
2011-05-30 23:43:13