php获取csv
思路:
读取csv文件,每读取一行数据,就插入数据库
示例
文件夹结构
/
file.csv//csv大文件,这里只模拟三行数据,不考虑运行效率(PS:csv文件格式很简单,文件一般较小,解析很快,运行效率的瓶颈主要在写入数据库操作)
index.php//php文件
file.csv
singi,20
lily,19
daming,23
index.php
/**
*读取csv文件,每读取一行数据,就插入数据库
*/
//获取数据库实例
$dsn='mysql:dbname=test;host=127.0.0.1';
$user='root';
$password='';
try{
$db=newPDO($dsn,$user,$password);
}catch(PDOException$e){
echo'Connectionfailed:'.$e->getMessage();
}
//读取file.csv文件
if(($handle=fopen("file.csv","r"))!==FALSE){
while(($row=fgetcsv($handle,1000,","))!==FALSE){
//写入数据库
$sth=$db->prepare('insertintotestsetname=:name,age=:age');
$sth->bindParam(':name',$row[0],PDO::PARAM_STR,255);
$sth->bindParam(':age',$row[1],PDO::PARAM_INT);
$sth->execute();
}
fclose($handle);
}
数据表
CREATETABLE`test`(
`id`INT(10)UNSIGNEDNOTNULLAUTO_INCREMENT,
`name`VARCHAR(255)NULLDEFAULT''COLLATE'utf8mb4_bin',
`age`INT(10)NULLDEFAULT'0',
PRIMARYKEY(`id`)
)
COLLATE='utf8mb4_bin'
ENGINE=InnoDB;
运行结束后,数据库中会插入csv中的三行数据
② csv文件用PHP要怎么读取
读取csv文件制定行数(行区间)
<?php
function get_file_line( $file_name, $line_star, $line_end){
$n = 0;
$handle = fopen($file_name,"r");
if ($handle) {
while (!feof($handle)) {
++$n;
$out = fgets($handle, 4096);
if($line_star <= $n){
$ling[] = $out;
③ php 读取同一目录下的csv文件(一个或多个)
如果你的代码是可以正常运行的,用glob函数可以读取相对应的文件
<?php
$path = 'warehouse_data/DFRC/'
foreach (glob($path."*.csv") as $filename) {
$handle = fopen($filename,"r");
setlocale(LC_ALL,array('zh_CN.gbk','zh_CN.GBK GBK ','zh_CN.gb2312','zh_CN.gb18030','en_US.UTF-8','zh_CN'));
while ($data = fgetcsv($handle, 2000, ",")) {
$sql = "insert into `".$t."`(`pu_no`,`cust_no`,`custname`,`requ`,`supply`,`supply_no`,`ck_adr`,`arr_time`,`arr_adr`,`unload_point`,`indent_mount`,
`snp`,`case_mount`,`dgs`,`gj_dd`,`sd`,`pack_no`,`auto_style`) values ('".$data[0]."','".$data[1]."','".$data[2]."','".$data[3]."','".$data[4]."',
'".$data[5]."','".$data[6]."','".$data[7]."','".$data[8]."','".$data[9]."','".$data[10]."','".$data[11]."','".$data[12]."','".$data[14]."','".$data[15]."',
'".$data[16]."','".$data[17]."','".$data[29]."')" ;
echo $sql.'<br />'
mysql_query($sql);
//print_r($data);
}
unset($handle);
unlink($filename);
}
?>
④ 为什么php读取csv文件读到首个字符是中文
$handle=fopen('link.csv','r');
while($data=fgetcsv($handle,10000,","))
{
//输出你想要的$data数据
echo $data["0"];
}
⑤ php中如何导入导出CSV格式的文件
其实你可以用
phpmyadmin
实现导入导出,不过导入的时候字段要和数据表的字段一一对应,参考资料里面的直接用PHP读取excel的,可能也会对你有帮助!
⑥ php怎么读取csv文件并插入数据库
使用 phpmyadmin 中的导入功能,选择csv格式
⑦ php 生成 csv文件
<?php
/**
*CreatedbyPhpStorm.
*User:[email protected]
*Date:2016/12/210021
*Time:下午12:08
*/
//头部标题
$csv_header=['名称','性别','年龄'];
//内容
$csv_body=[
['张三','男','13'],
['李四','女','13'],
['王五','男','13'],
['赵六','未知','13']
];
/**
*开始生成
*1.首先将数组拆分成以逗号(注意需要英文)分割的字符串
*2.然后加上每行的换行符号,这里建议直接使用PHP的预定义
*常量PHP_EOL
*3.最后写入文件
*/
//打开文件资源,不存在则创建
$fp=fopen('test.csv','a');
//处理头部标题
$header=implode(',',$csv_header).PHP_EOL;
//处理内容
$content='';
foreach($csv_bodyas$k=>$v){
$content.=implode(',',$v).PHP_EOL;
}
//拼接
$csv=$header.$content;
//写入并关闭资源
fwrite($fp,$csv);
fclose($fp);
⑧ HTML表单提交的csv格式表格php怎么读取内容
亲,你好,很高兴为你解答
首先你使用form表单进行文件上传操作,需要先把文件上传到服务器保存到指定的服务器目录。
然后你再使用PHP程序来打开已经上传到服务器上面的csv文件即可。
希望可以帮到你~~~