一: 要求:

上面的图表 中的数据插入到 3张表中.

1)t_vide_warehourse 分类表:

此表中包含 一级分类 和二级分类.  二级分类是一级分类的子级.

2)t_video_info   包名表

此表 管理  第一张表.   并且 只有 第二次分类 才可以有 包 名 .

一个二级分类下 可以  有多个包.

3)t_video_file  文件表.

此表 关联 第二张表;   一个  包 下  可以 有多个文件.

-----------------------------------------------------------------------------------------------

情况1:

上面:   第二级分类 就是 [教育培训], 包名 是  [计算机培训],  文件名是 [Android开发初级课程SQLite数据库介绍]

情况2:

上面:  二级分类 名 是 [其他],  包名是 [Photoshop CS6一对一教程],  文件名是 [01-01 Photoshopcs6安装方法]

情况3:

这种分类是空白的 数据 ,就排除掉. 不插入到数据库.

二: 导入到数据库的主题文件.

因为一个excel文件包含了 17个sheet ,太大了. 所以我们一个一个sheet的导入.

----------------

目录结构:

----------------------------------

1. file01.php

 <?php
// ini_set ('memory_limit', '-1');
/***************读取excel文件**************/
require_once 'PHPExcel_1.8.0/Classes/PHPExcel/IOFactory.php'; // echo "停止运行!";
// die; $execlName = '01.xlsx';
$firstCateName = "计算机"; // $execlName = '02.xlsx';
// $firstCateName = "金融、会计"; // $execlName = '03.xlsx';
// $firstCateName = "就业创业"; // $execlName = '04.xlsx';
// $firstCateName = "学前教育"; // $execlName = '05.xlsx';
// $firstCateName = "烹饪"; // $execlName = '06.xlsx';
// $firstCateName = "电子商务"; // $execlName = '07.xlsx';
// $firstCateName = "党政“两学一做”"; // $execlName = '08.xlsx';
// $firstCateName = "美术"; // $execlName = '09.xlsx';
// $firstCateName = "体育锻炼"; // $execlName = '10.xlsx';
// $firstCateName = "英语学习"; // $execlName = '11.xlsx';
// $firstCateName = "物联网"; // $execlName = '12.xlsx';
// $firstCateName = "个人提升"; // $execlName = '13.xlsx';
// $firstCateName = "国学"; // $execlName = '14.xlsx';
// $firstCateName = "影视"; // $execlName = '15.xlsx';
// $firstCateName = "音乐"; // $execlName = '16.xlsx';
// $firstCateName = "艺术修养"; // $execlName = '17.xlsx';
// $firstCateName = "养生"; $reader = PHPExcel_IOFactory::createReader('Excel2007'); //设置以Excel5格式(Excel97-2003工作簿)
$objPHPExcel = $reader->load($execlName); // 载入excel文件
$objWorksheet = $objPHPExcel->getSheet(0); // 读取第一個工作表
$highestRow = $objWorksheet->getHighestRow(); // 取得总行数
// $highestColumm = $objWorksheet->getHighestColumn(); // 取得总列数 $highestColumm = 'K'; // 取得总列数 // echo '总行数'.$highestRow."总列数:".$highestColumm; /************ 循环读取每个单元格的数据 *********************/ //行数是以第2行开始: A2,B2,C2....----> A10,B10,C10...----->
for ($row = 2; $row <= $highestRow; $row++)
{
for ($column = 'A'; $column <= $highestColumm; $column++)
{//列数是以A列开始 //取得一个单元格的值
$cell = $objWorksheet->getCell($column.$row)->getValue();
//富文本对象 转为 字符串
if($cell instanceof PHPExcel_RichText)
{
$cell = $cell->__toString();
} //$oneData 是一条记录
$oneData[] = $cell; } //$data 是多条记录
$data[] = $oneData;
//清空原来的一条记录
unset($oneData);
} //上面取出$data是初始数据,还需要进行处理
// // 去除 没有 分类的数据
foreach ($data as $key => $value)
{
if(empty($value[2]))
{
unset($data[$key]);
}
} // echo "<pre>";
// print_r($data); //1: 添加一级分类, 二级分类, 包名:
foreach ($data as $k => $v)
{
//一级分类:
$v[0] = $firstCateName; $arr = explode('->', $v[2]); if (count($arr) == 1)
{
//二级分类:
$v[1] = '其他'; //包名:
}
else
{
//二级分类:
$v[1] = $arr[1]; //包名:
$v[2] = $arr[2];
} $data1[] = $v;
} // echo "<pre>";
// print_r($data);
// print_r($data1); //2: 获取 一级分类id; 二级分类id, 包id; 如果没有, 就插入返回的id
include_once 'test.php'; foreach ($data1 as $k => $v)
{
//1: 插入一级分类:
$firstCateName = $v[0];
$firstCateId = insertFrist($firstCateName); //2: 插入二级分类:
$secondCateName = $v[1];
$secondCateId = insertSecond($secondCateName, $firstCateId); //3: 插入info表: 包名:
$baoName = $v[2];
$path = '/Course/CourseImage/'.$v[5];
$infoId = insertInfo($baoName, $path, $secondCateId); //4: 插入文件:
$fileName = $v[3];
$imagePath = '/Course/CourseImage/'.$v[5];
$keywords = $v[6];
$fileType = substr($v[4],strrpos($v[4],'.')+1);
$filePath = '/files/video/'.$v[4];
insertFile($infoId, $fileName, $imagePath, $keywords, $fileType, $filePath); } echo $firstCateName. '导入完毕!'; /*******************函数**********************/ ?>

注意:

因为格式是 .xlsx  所以 这里是 Excel2007 , 不是 Excel5

2. test.php

插入数据库函数.

 <?php

     // var_dump(insertFrist('英语1'));

     // var_dump(insertSecond('英语1-1', 153309));
// var_dump(insertSecond('英语1-2', 153309));
// var_dump(insertSecond('测试', 153309)); // var_dump(insertFrist('英语2'));
// var_dump(insertSecond('测试', 153313)); // var_dump(insertInfo('包3', '/coure/test/01.png',153314));
// var_dump(insertInfo('包3', '/coure/test/01.png',153315));
//
// var_dump(insertFile(111, '测试文件2', '/course/test/01.jpg', 'haha, gest,test', 'flv', '/course/video/01.flv')); /*******************函数**********************/ function insertFrist($firstCateName)
{ $firstCateName = trim($firstCateName); $dbhost = '127.0.0.1'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = ''; // mysql用户名密码
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
} mysql_select_db('testvideo', $conn);
// 设置编码,防止中文乱码
mysql_query("set names utf8", $conn); $sql = "SELECT * FROM t_vide_warehourse WHERE RW_NAME = '" .$firstCateName. "' AND RW_PARENT_ID = 0 ";
$result = mysql_query( $sql, $conn );
if(! $result )
{
die('Could not get data: ' . mysql_error());
}
else
{
$num = mysql_num_rows($result); if ($num == 0)
{
$sql = "INSERT INTO t_vide_warehourse (RW_NAME, RW_PARENT_ID) VALUES ('" .$firstCateName. "', 0)";
if (mysql_query($sql, $conn)) {
return mysql_insert_id();
}else{
echo "插入一级出错". mysql_error();
}
}
else
{
while ($row = mysql_fetch_array($result) )
{
return $row["VIDEO_RW_ID"];
}
} } //查询
mysql_close($conn);
} function insertSecond($secondCateName, $firstCateId)
{ $secondCateName = trim($secondCateName); $dbhost = '127.0.0.1'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = ''; // mysql用户名密码
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
} mysql_select_db('testvideo', $conn);
// 设置编码,防止中文乱码
mysql_query("set names utf8", $conn); $sql = "SELECT * FROM t_vide_warehourse WHERE RW_NAME = '" .$secondCateName. "' AND RW_PARENT_ID = $firstCateId ";
$result = mysql_query( $sql, $conn );
if(! $result )
{
die('Could not get data: ' . mysql_error());
}
else
{
$num = mysql_num_rows($result); if ($num == 0)
{
$sql = "INSERT INTO t_vide_warehourse (RW_NAME, RW_PARENT_ID) VALUES ('" .$secondCateName. "', $firstCateId)";
if (mysql_query($sql, $conn)) {
return mysql_insert_id();
}else{
echo "插入二级级出错". mysql_error();
}
}
else
{
while ($row = mysql_fetch_array($result) )
{
return $row["VIDEO_RW_ID"];
}
} } //查询
mysql_close($conn);
} function insertInfo($baoName, $path, $secondCateId)
{ $baoName = trim($baoName);
$path = trim($path); $dbhost = '127.0.0.1'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = ''; // mysql用户名密码
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
} mysql_select_db('testvideo', $conn);
// 设置编码,防止中文乱码
mysql_query("set names utf8", $conn); $sql = "SELECT * FROM t_video_info WHERE VIDEO_TITLE = '" .$baoName. "' AND RW_ID = $secondCateId ";
$result = mysql_query( $sql, $conn );
if(! $result )
{
die('Could not get data: ' . mysql_error());
}
else
{
$num = mysql_num_rows($result); if ($num == 0)
{
$sql = "INSERT INTO t_video_info (VIDEO_TITLE,PATH, RW_ID) VALUES ('" .$baoName. "', '" .$path. "', $secondCateId)";
if (mysql_query($sql, $conn)) {
return mysql_insert_id();
}else{
echo "插入info出错". mysql_error();
}
}
else
{
while ($row = mysql_fetch_array($result) )
{
return $row["VIDEO_ID"];
}
} } //查询
mysql_close($conn);
} function insertFile($infoId, $fileName, $imagePath, $keywords, $fileType, $filePath)
{ $fileName = trim($fileName);
$imagePath = trim($imagePath);
$keywords = trim($keywords);
$fileType = trim($fileType);
$filePath = trim($filePath); $dbhost = '127.0.0.1'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = ''; // mysql用户名密码
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
} mysql_select_db('testvideo', $conn);
// 设置编码,防止中文乱码
mysql_query("set names utf8", $conn); $sql = "INSERT INTO t_video_file (VIDEO_ID, FILE_NAME, IMAGEPATH, KEYWORDS, FILE_TYPE, FILE_PATH) VALUES ($infoId, '" .$fileName. "', '" .$imagePath. "', '" .$keywords. "', '" .$fileType. "', '" .$filePath. "')"; // echo $sql; if (mysql_query($sql, $conn)) {
return mysql_insert_id();
}else{
echo "插入文件出错". mysql_error();
} //查询
mysql_close($conn);
} ?>

这里4个函数:

1) insertFrist  给 第一张表插入 第一级分类, 如果重复,返回已有id ; 不重复, 插入,返回新的id;

2)insertSecond  给第一张表 插入 二级分类, 如果重复, 返回已有id; 不重复, 插入,返回新的id;

3)insertInfo 给第二张表插入 数据,   如果重复, 返回已有id; 不重复, 插入,返回新的id;

4)insertFile 给第三张宝插入数据,  对于文件 ,不考虑文件名是否重复.

PHPexcel 导入import 数据到 mysql: mysql 查询数据是否存在, 如果存在返回id, 不存在, 插入返回id. 2) mysql_query , mysql_connect, mysql_select_db, mysql_error, mysql_num_rows,mysql_close的更多相关文章

  1. 如何实现MySQL随机查询数据与MySQL随机更新数据?

    以下的文章主要介绍的是MySQL随机选取数据,对实现MySQ随机查询数据与MySQ随机更新数据的实际操作步骤的描述,以及对其实际操作中所要用到的语句的描述,以下就是对其具体操作步骤的描述. MySQL ...

  2. Python3操作MySQL,查询数据并保存到文件中

    我们在测试过程中,可能需要到数据库中拉去一些数据,为从测试准备.比如最近在做接口性能测试的时候,就需要很多数据来支撑,所以就需要的数据库去查询数据,下面就是python3 查询 mysql 并且保存到 ...

  3. 分享:mysql 随机查询数据

    在mysql中查询5条不重复的数据,使用以下: 1 SELECT * FROM `table` ORDER BY RAND() LIMIT 5  就可以了.但是真正测试一下才发现这样效率非常低.一个1 ...

  4. nodejs操作 mongoose(mongodb)和Sequelize(mysql)查询数据后添加新属性未生效

    最近在着手koa时候,发现mongoose(mongodb)查询数据库后添加新属性,前端拿不到新属性问题, 然后测试了一下Sequelize(mysql),发现也有同样的问题存在.此时着手干! 1.1 ...

  5. MySQL 数据库查询数据,过滤重复数据保留一条数据---(MySQL中的row_number变相实现方法)

    转自: http://www.maomao365.com/?p=10564 摘要: 下文讲述MySQL数据库查询重复数据时,只保留一条数据的方法 实现思路: 在MySQL数据库中没有row_numbe ...

  6. MySQL数据库——查询数据

    增加数据: insert into "表名" values( '字段'',字段'); 或insert into '表名'( '字段'',字段')  values( '字段'',字段 ...

  7. iOS开发之数据存取2-CoreData后台查询数据

    注意:本人所讲的后台查询必须在使用CoreData时选择存储类型为“SQLite”,因为二进制或者XML存储方式会在打开的时候直接读到内存中. 1.CoreData数据后台查询出现的情况 CoreDa ...

  8. Mysql数据库查询数据文件大小

    参考网站:https://zhidao.baidu.com/question/201227796936321525.html 用SQL命令查看Mysql数据库大小 要想知道每个数据库的大小的话,步骤如 ...

  9. 解决mysql控制台查询数据乱码的问题,有图有真相

    在mysql  控制台当 当为gbk的时候查询的数据是汉字,假设不是则为乱码.  set  names  gbk;  那么查询出来的数据则为汉字

随机推荐

  1. 【洛谷p1164】小A点菜

    (……) 小A点菜[传送门] 上标签: (一个神奇的求背包问题方案总数的题) 核心算法: ;i<=n;i++) for(int j=m;j>=a[i];j--) f[j]+=f[j-a[i ...

  2. 基于jquery实现页面loading加载效果

    实现loading 加载提示 ······ 透明遮罩 居中效果 具体代码如下: CSS样式部分: <style type="text/css"> .background ...

  3. Zookeeper浏览器工具和Eclipse插件

    公司很多产品会使用zookeeper,比如Meta消息中间件,在测试的过程中,我们经常需要查询zookeeper里面的信息来精确定位问题.目前项目中有开发团队自己写的浏览器node-zk-browse ...

  4. Spring Cloud系列之Feign的常见问题总结

    一.FeignClient接口,不能使用@GettingMapping 之类的组合注解 代码示例: @FeignClient("microservice-provider-user" ...

  5. 微信小程序页面无法跳转

    推荐网址:https://www.jianshu.com/p/e56b55334585 1.无法跳转原因分析 要跳转的路径在app.js里未注册过或路径写错   要跳转的路径是否位于TabBar中 页 ...

  6. js 日期格式: UTC GMT 互相转换

    //UTC 转指定格式日期 let date = '2018-03-07T16:00:00.000Z' console.log(moment(date).format('YYYY-MM-DD HH:m ...

  7. JBoss/WildFly 初步安装配置教程

    1.下载 Redhat的JBoss与Oracle的Weblogic.IBM的WebSphere并称三大JAVA EE中间件. JBoss AS是JBoss的开源版本,JBoss EAP是JBoss的企 ...

  8. pyqt实现滑动开关

    https://www.cnblogs.com/feiyangqingyun/p/6035633.html 根据Qt的实现,在PyQt上面实现了滑动开关的控件 import sys from PyQt ...

  9. windows7时间同步设置

    1. 设置同步源 服务器修改为本车的104的ip地址,例如23车,手动输入 96.3.123.104 2. 设置同步周期. 注册表法 在“运行”框输入“Regedit”进入注册表编辑器 这种方法是通过 ...

  10. 蓝桥杯—BASIC-27 2n皇后问题(DFS)

    问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后, 使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行. 同一列或 ...