一: 要求:

上面的图表 中的数据插入到 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. 启动adb devices,报adb已停止工作

    1.winddows下,一般是由于adb默认的”5037“被其他应用占用导致的(手机助手或者360居多) 2.cmd 下 netstat -ano |find "5037"查找占用 ...

  2. DP 租用游艇

    洛谷P1359租用游艇 分析:这个游艇我看到题目下意识的就想将dp数组设为dp[i][j]表示i到j之间的最短距离,但题目上要求的只是从起点到终点的距离,这样设只是自找麻烦. 直接设成dp[i]表示从 ...

  3. Appium移动自动化测试(一)----Appium的安装

    前言: 我的环境为win10 64,安装过程请根据自己的电脑环境而定. 一.Appium安装 1.Appium官方网站:http://appium.io/下载windows版本的Appium; Eas ...

  4. bzoj2875

    题意:\(x_{i+1}=(x_{i}*a+c)%m\)求,x_n%g 题解:\(x_n=(a^n*x_0+(a^{n-1}+a^{n-2}+...+a+1)*c)%m\),由于a-1和m不一定互质, ...

  5. application使用@符合问题:'@' that cannot start any token. (Do not use @ for indentation)

    在application配置文件中使用@出现异常: Exception in thread "main" while scanning for the next token fou ...

  6. Javascript 将 HTML 页面生成 PDF 并下载

    最近碰到个需求,需要把当前页面生成 pdf,并下载.弄了几天,自己整理整理,记录下来,我觉得应该会有人需要 :) html2canvas 简介 我们可以直接在浏览器端使用html2canvas,对整个 ...

  7. NOIP2012国王游戏(60分题解)

    题目描述 恰逢 H国国庆,国王邀请n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最前面 ...

  8. PyCharm+Qt Designer+PyUIC安装配置教程

    Qt Designer用于像VC++的MFC一样拖放.设计控件 PyUIC用于将Qt Designer生成的.ui文件转换成.py文件 Qt Designer和PyUIC都包含在PyQt5中,所以我们 ...

  9. vsftpd更新和修改版本号教程

    1.rpm包更新 类似以下更新即可 rpm -Uvh vsftpd--.el6.x86_64.rpm 2.源码更新 不懂为什么对于新版本可能只有源码包而没有rpm等包,如此只能以源码更新了. .tar ...

  10. WebSphere安装教程(WAS6.1为例)

    1.网络准备 我们选择图形界面安装,如果堡垒机是windows则要在目标机器安装桌面环境并开启vcnserver:如果堡垒机是Linux则在堡垒机安装桌面环境和vncserver,然后将目标机的DIS ...