php 封装原生数据导入的方法(csv文件格式)
//前端---部分代码
<form class="form-inline" style="margin-top: 20px" method="post" action="/admin/commerce/import" enctype="multipart/form-data" style="display:inline-block">
<div class="form-group">
<label for="commerce_file">选择文件</label>
<input class="form-control input-sm" type="file" name="commerce_file">
</div>
<button type="submit" class="btn btn-info">数据导入按钮</button>
</form> //后端---原生封装导入方法
public function actionimport()
{
if(!$_FILES['commerce_file']['name'])
{
$this->success('请选择csv格式文件');
}
if($_FILES['commerce_file']['size'] >= '2097152')//2M
{
$this->success('文件不能超过2M');
}
//获取储存的临时文件名
$csv_file = $_FILES['commerce_file']['tmp_name']; //打开文件获取可读权限
$file = fopen($csv_file,"r"); //输出文本中所有的行,直到文件结束为止
while(! feof($file))
{
//函数从文件指针中读入一行并解析CSV 段
$data_line = fgetcsv($file); if($data_line)
{
foreach($data_line as $k => $v)
{
//指定文件从gbk编码转换,为utf-8编码
$data_line[$k] = iconv('gbk','utf-8',$v);
}
$data[] = $data_line;
}
}
//关闭打开文件
fclose($file);
$first = $data[0];
//设定表头标题名称
$name = array('ID','名称');
if($first)
{
foreach($first as $k => $v)
{
if($v != $name[$k])
{
$this->success('文件格式错误,请查看文件格式核实');
}
}
}
if($data)
{
//删除第一行数据
unset($data[0]);
//统计插入数量
$sum = 0;
foreach($data as $v)
{
//插入数据方法自己根据框架定义
$rs = Yii::app()->getDb()->createCommand()->insert('sdk_commerce', array(
'id' => $v[0],
'name' => $v[1]
));
$sum += $rs;
}
$this->success('成功导入<font color=red><b>'.$sum.'</b></font>条数据','/admin/commerce/list/');
}
}
php 封装原生数据导入的方法(csv文件格式)的更多相关文章
- php 封装原生数据导出的方法(csv文件格式)和csv文件中长数字自动变成科学计数法的处理
如何解决上图长数字自动转换处理? CSV文件中长数字自动变成科学计数法处理.用程序导出的csv文件,当字段中有比较长的数字字段存在时,在用excel软件查看csv文件时就会变成科学计数法的表现形式. ...
- MySQL数据导入导出方法与工具mysqlimport
MySQL数据导入导出方法与工具mysqlimport<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office ...
- excel中的数据导入oracle方法
SQL_loader批量上传数据 1. 注释 在工作中,很多时候会遇到如下情况:需要将excel中的数据批量上传到ORACLE表中.如果是小数据量,如几十条至几百条,那么用plsql dev工具 ...
- mysql数据导入导出方法总结
MySQL数据备份还原方式总结: 一.将数据导入到指定的数据库 第一种导入方式: (linux下和Windows 下语法是一样的,只是路径的书写方式不同而已) 1.创建一个空数据库 2.进入MySQL ...
- sql server数据导入导出方法统计
常用的数据量不是很大的情况的几种方法:转载地址 http://www.cnblogs.com/changbluesky/archive/2010/06/23/1761779.html 大数据量的推荐导 ...
- MongoDB数据导入导出成csv或者json
1. 从远程数据表拉取数据到本地json文件 mongoexport --host 远程服务器IP --port 远程服务器端口 --username 远程数据库用户名 --password 远程数据 ...
- 基于ElementUI封装Excel数据导入组件
由于前端项目使用的是Vue-cli3.0 + TypeScript的架构,所以该组件也是基于ts语法封装的,组件的完整代码如下: <template> <div id="m ...
- poi大数据导入解决方法
This one comes up quite a lot, but often the reason isn't what you might initially think. So, the fi ...
- Python数学建模-02.数据导入
数据导入是所有数模编程的第一步,比你想象的更重要. 先要学会一种未必最佳,但是通用.安全.简单.好学的方法. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数据导入 ...
随机推荐
- Picture【HDU - 1828】【扫描线】
题目链接 这道题求的是这些可能存在重叠的小方块可能构成的合成方块的周长的值是多少,有简单却会很复杂的做法就是去跑纵向和横向两次的扫描线,求得最后的两个周长和,但是这样的做法未免显得复杂了,我们完全可以 ...
- 跨域资源共享(CORS)-漏洞整理
绕过方法整理 绕过 - 仅对域名校验 #POC #"Access-Control-Allow-Origin: https://xx.co & Access-Control-Allow ...
- urllib.parse解析链接
1. urlparse() 解析链接,注意,返回值比3多一个params的属性 from urllib.parse import urlparse result = urlparse('http:// ...
- SAS去空格
data test; x=" aaa bbb hahaha"; x1=compress(x); x2=left(x); p ...
- LibreOJ 6177 题解(状压DP)
题面 传送门 分析 刚看到这道题时想的是跟最短哈密顿路类似的二进制状压DP,先用floyd处理距离 但是此题用二进制不够,应该用三进制 0,1,2分别表示未送,正在送,已送完 dp[s][i]表示当前 ...
- Codeforces Round #535 (Div. 3) F
F. MST Unification 题目传送门 题意: 给你n个顶点,m条边:保证没有重边,其中存在多个MST(最小生成树), 你可以修改一些边的权值,让其中有且仅有一个最小生成树,求最少操作的边数 ...
- Java 小技巧和在Java避免NullPonintException的最佳方法(翻译)
前几天就g+里面看到有人引用这篇博文.看了一下.受益颇多. 所以翻译过来,希望和大家一起学习.本人英语水平有限,假设有错,请大家指正. 原文地址(须要翻墙):http://ja ...
- 攻防世界--re2-cpp-is-awesome
测试文件:https://adworld.xctf.org.cn/media/task/attachments/c5802869b8a24033b4a80783a67c858b 1.准备 获取信息 6 ...
- CLR 垃圾回收知识梳理
- elasticsearch 基础 —— URI搜索
URI搜索 可以通过提供请求参数使用URI来执行搜索请求.使用此模式执行搜索时,并非所有搜索选项都会暴露.这是一个例子: GET twitter/_search?q=user:kimchy 示例响应: ...