一: 要求:

上面的图表 中的数据插入到 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. python生成随机整数

    python生成随机不重复的整数,用random中的sample index = random.sample(range(0,10),10) 上面是生成不重复的10个从1~10的整数 python生成 ...

  2. PHP工厂模式的使用场景,使用方法

    所谓工厂模式和生产有关.生产什么呢?生产出来的是一个实例对象.通过什么设备生产?通过一个工厂类生产simpleFactoty.怎么生产呢?工厂类调用自身静态方法来生产对象实例static functi ...

  3. python记录_day18 反射 判断函数与方法

    一.三个内置函数 1.issubclass(a, b)  判断a类是否是b类的子类 class Foo: pass class Zi(Foo): pass class Sun(Zi): pass pr ...

  4. 【MySQL】【4】数据库时间与实际时间相差8小时

    原因:由于默认的是UTC时间,所以在中国有8个小时的时差,需要将serverTimezone的值改为GMT%2B8 spring: datasource: url: jdbc:mysql://172. ...

  5. 转-如何使用iTunes制作iPhone铃声

    新版iTunes(iTunes11)推出以后,界面上发生了一些改变,给人带来一种面貌一新的感觉,但也给许多朋友带来一些操作上的不太适应.下面就大家比较关心的iPhone的铃声制作方法,我在iTunes ...

  6. ASP.NET 后台页面无法识别服务器控件ID

    在学习asp.net 的时候 发现有个页面服务器控件无法识别,提示未知元素 解决方法 将不能识别服务器控件ID 的后台文件 类名改写,重新生成一次. 然后再改回来就可以了.

  7. Linux下zoopkeeper的安装和启动

    Linux下zoopkeeper的安装和启动 1.什么是zookeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoo ...

  8. django学习之——我的 Hello World

    pycharm 打开django 创建的项目:添加views.py文件 修改 urls.py from django.conf.urls import patterns, include, url f ...

  9. zookeeper 食谱

    以示例形式说明 zk 食谱. 假定有 4 个客户端,分别执行 create -s -e /lock/read xx 或 create -s -e /lock/write 获取锁. 一.获取读锁的情况: ...

  10. 如何把一个杯子卖到上万元,不学你就OUT了

    我们可以看看一个产品卖到多少钱需要占有什么样的资源: 第1种卖法:卖产品本身的使用价值,只能卖3元/个 如果你将他仅仅当一只普通的杯子,放在普通的商店,用普通的销售方法,也许它最多只能卖3元钱,还可能 ...