怎么高效的数据库操作

TM_skyinfo 2010-08-14 04:09:27
比如数据库里面有张表。 test 有个字段 model (varchar)

model字段存了几千条数据或者几万条数据 现在要对其字段值全部修改

如果是几千条数据以内的我是这样做的:

<?PHP   
if(ini_get('max_execution_time')<>0)ini_set('max_execution_time',0);
if (@ini_get('com.allow_dcom') != true) @ini_set('magic_quotes_sybase', true);
$host="********";
$user="********";
$pwd="********";
$db="********";
$tb="********";
$filename = "D:\www\xls\\model.xls";
$sheet1 = "sheet2";
$excel_app = new COM("Excel.application") or Die ("Did not connect");
$Workbook = $excel_app->Workbooks->Open("$filename") or Die("Did not open $filename $Workbook");

$con1=mysql_connect($host,$user,$pwd);
$db_query=mysql_select_db($db,$con1);

for($i=2;$i>0;$i++)
{
$Worksheet = $Workbook->Worksheets($sheet1);
$Worksheet->activate;
$excel_cell = $Worksheet->Range("A".$i);
$excel_cell->activate;
$excel_result1 = $excel_cell->value;

$excel_cell = $Worksheet->Range("B".$i);
$excel_cell->activate;
$excel_result2 = $excel_cell->value;
if($excel_result1<>""&&$excel_result2<>"")
{
$sql="update `".$tb."` set `products_model` = '".$excel_result1."' WHERE `products_model` = '".$excel_result2."'";
$query=mysql_query($sql);
}else
{
break;
}
}

#To close all instances of excel:
$Workbook->Close;
unset($Worksheet);
unset($Workbook);
$excel_app->Workbooks->Close();
$excel_app->Quit();
unset($excel_app);

?>
我excle表里面存两行数据一行新的数据,另一行是旧的需要改的数据
今天我差不多8000条数据运行一下结果花了20几分钟。
要是以后需要变成几万条甚至几十万条数据这样肯定是不行了
有没有什么好的办法。需求到时很简单提供一个新值已旧值做条件修改,
...全文
123 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
maquan 2010-08-18
假设你要处理的是表 A,你先把 excel 里的东西原样变成表 B,然后用一个查询语句得到你所需要的最终结果,形成表 C,最后用表 C 替换表 A。

保证奇快无比。
回复
美人心计1999 2010-08-18
多次一举
回复
CunningBoy 2010-08-17
用数据库就是提高效率啊
回复
TM_skyinfo 2010-08-17
[Quote=引用 3 楼 cunningboy 的回复:]

数据多的话,不要用excel,用数据库
如果你不想用大型数据库,可以考虑用桌面数据库,SQLite什么的,都可以。
[/Quote]只要有效率就行了 。其他可以不考虑的
回复
CunningBoy 2010-08-14
数据多的话,不要用excel,用数据库
如果你不想用大型数据库,可以考虑用桌面数据库,SQLite什么的,都可以。
回复
TM_skyinfo 2010-08-14
[Quote=引用 1 楼 zx119koko 的回复:]

不明白为啥用excel.
你可以考虑1. 将excel导入到数据库的一个临时表中,修改完毕再导出到excel.
2. excel保存为csv格式,然后直接对csv字符串操作.
[/Quote]你的意思把excle里面的数据存到数据库里面?
回复
zx119koko 2010-08-14
不明白为啥用excel.
你可以考虑1. 将excel导入到数据库的一个临时表中,修改完毕再导出到excel.
2. excel保存为csv格式,然后直接对csv字符串操作.
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告