思路:
读取csv文件,每读取一行数据,就插入数据库
示例
文件夹结构
/
file.csv?//csv大文件,这里只模拟三行数据,不考虑运行效率(PS:csv文件格式很简单,文件一般较小,解析很快,运行效率的瓶颈主要在写入数据库操作)
index.php?//php文件
file.csv
index.php
/**
*?读取csv文件,每读取一行数据,就插入数据库
*/
//获取数据库实例
$user?=?'root';
$password?=?'';
try?{
$db?=?new?PDO($dsn,?$user,?$password);
}?catch?(PDOException?$e)?{
echo?'Connection?failed:?'?.?$e-getMessage();
}
//读取file.csv文件
if?(($handle?=?fopen("file.csv",?"r"))?!==?FALSE)?{
while?(($row?=?fgetcsv($handle,?1000,?","))?!==?FALSE)?{
//写入数据库
$sth?=?$db-prepare('insert?into?test?set?name=:name,age=:age');
$sth-bindParam(':age',$row[1],PDO::PARAM_INT);
$sth-execute();
fclose($handle);
数据表
CREATE?TABLE?+test+?(
+id+?INT(10)?UNSIGNED?NOT?NULL?AUTO_INCREMENT,
+age+?INT(10)?NULL?DEFAULT?'0',
PRIMARY?KEY?(+id+)
)
ENGINE=InnoDB;
运行结束后,数据库中会插入csv中的三行数据
//第一种?
php
$conn?=?mysql_connect("主机名","用户名","密码");
mysql_select_db("数据库名",$conn);
$sql?=?"select?*?from?user";
$result?=?mysql_query($sql);
$data="";
while($row?=?mysql_fetch_row($result)){
foreach($row?as?$v){
$data?.=$v."|";?//加个树线隔开字段
file_put_contents("abc.txt",$data);
//第二种
$filename?=?"abc.txt";
$res?=?fopen($filename,"r");
while(!feof($res)){
$buffer?=?fgets($res);
$buffer?=?str_replace('?',?'|',?$buffer);?
$array?=?explode('|',?$buffer);?
foreach($array?as?$v){
if(strlen($v)0){
$arr[]?=?$v;
fclose($res);
//组装数组插入数据库就可以了
如果直接使用file_get_contents来读取文件,那么在文件很大的时候会很占内容,比如这个文件有1GB的时候.
这个时候使用传统的文件操作方式就好的多,因为是查找嘛,逐行读取匹配应该也是可以的,下面是我的一个建议,不知道是否满足你的要求,可以看下:
//
需要查找的内容
$search
=
'bcd';
打开文件
$res
fopen('a.txt',
'r');
while
($line
fgets($res,
{
根据规则查找
if
(strpos($line,
$search)
===
0)
根据既定规则取得需要的数据
echo
substr($line,
-1);
这里就是你想得到的
break;
关闭文件
①.,显示总的数据
针对的解决办法:
①.,这个对数据库而言,就是读取所有符合展示条件的信息
$where = 你的搜索条件;
$all_info = $this-db-getall('table_name','$where');
跳转到特定的条目:
那就是你给id赋值,进行查询即可.
$txt=file('aaa.txt');
echo?$txt[0];
$sql="insert?into?text.tab?(a,b)?values('$txt[0]',?'$txt[1]')";?
if?(mysql_query($sql))?echo?'插入数据库成功';?
else?'插入数据库失败,SQL语句:$sqlbr错误:".mysql_error();?
mysql_close();?
以上就是土嘎嘎小编为大家整理的php读文件一行数据相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!