php导入sql文件
sql php
php导入sql文件
基本思路
1.打开sql文件,放入一个变量(字符串类型)其中
2.使用正则替换掉其中的凝视(“--”与“/**/”)
3.使用explode切割成为一个数组并去除每行的空格
4.链接数据库之后使用my_query()运行sql
代码
<?php// +------------------------------------------------------------------------------------------// | Author: longDD <longdd_love@163.com>// +------------------------------------------------------------------------------------------// | There is no true,no evil,no light,there is only power.// +------------------------------------------------------------------------------------------// | Description: import sql Dates: 2014-08-07// +------------------------------------------------------------------------------------------class ImportSql{/** @var $content 数据库连接 */protected $connect = null;/** @var $db 数据库对象 */protected $db = null;/** @var $sqlFile sql文件 */public $sqlFile = "";/** @array @sqlArr sql语句数组 */public $sqlArr = array();/*** 构造函数** @param string $host 主机地址* @param string $user username* @param string $pw password* @param $db_name 数据库名称* @return void*/public function __construct($host, $user, $pw, $db_name){/** 连接数据库 */$this->connect = mysql_connect($host, $user, $pw) or die("Could not connect: " . mysql_error());/** 选中数据库 */$this->db = mysql_select_db($db_name, $this->connect) or die("Yon can not select the table:" . mysql_error());}/*** 导入sql文件** @param string $url 文件路径* @return true 导入成返回true*/public function Import($url){if(!file_exists($url)){exit("文件不存在! ");}$this->sqlFile = file_get_contents($url);if (!$this->sqlFile){exit("打开文件错误! ");}else{$this->GetSqlArr();if ($this->Runsql()){return true;}}}/*** 获取sql语句数组** @return void*/public function GetSqlArr(){/** 去除凝视 */$str = $this->sqlFile;$str = preg_replace('/--.*/i', '', $str);$str = preg_replace('/\/\*.*\*\/(\;)?/i', '', $str);/** 去除空格 创建数组 */$str = explode(";\n", $str);foreach ($str as $v){$v = trim($v);if (empty($v)){continue;}else{$this->sqlArr[] = $v;}}}/*** 运行sql文件** @return true 运行成功返回true*/public function RunSql(){/** 开启事务 */if (mysql_query('BEGIN')){foreach ($this->sqlArr as $k => $v){if (!mysql_query($v)){/** 回滚 */mysql_query('ROLLBACK');exit("sql语句错误:第" . $k . "行" . mysql_error());}}/** 提交事务 */mysql_query('COMMIT');return true;}else{exit('无法开启事务! ');}}}// +------------------------------------------------------------------------------------------// | End of ImportSql class// +------------------------------------------------------------------------------------------/*** This is a example.*/header("Content-type:text/html;charset=utf-8");$sql = new ReadSql("localhost", "root", "", "log_db");$rst = $sql->Import("./log_db.sql");if ($rst){echo "Success。";}// +------------------------------------------------------------------------------------------// | End of file ImportSql.php// +------------------------------------------------------------------------------------------// | Location: ./ImportSql.php// +------------------------------------------------------------------------------------------
php导入sql文件的更多相关文章
- Linux环境导入*.sql文件出现数据库为空
登录mysql命令: 导入.sql文件: 或者: mysql -h127.0.0.1 -uroot -p userDb < /home/user.sql 按回车键后输数据库的密码 导入成功后, ...
- WampServer数据库导入sql文件
WampServer中MySQL如何导入sql文件: http://jingyan.baidu.com/article/3c343ff7f9c7940d377963c0.html
- 向mysql workbench中导入.sql文件
mysql workbench用的不多,前段时间装了一下,然后用了一下,感觉操作比dbdesigner4要更人性化一点.其中二个方面做了改进,让我觉得很爽. 第一,就是端口可以修改了,以前就是定死33 ...
- 命令行导入SQL文件
摘要:把数据库导出为XX.sql格式的数据库文件,导入到另外一个数据库中的时候,总是无法全部导入.及时用mysql的命令界面导入依然是无法全部导入.老师告诉我:在命令行中运行的效率和成功率是最快和最高 ...
- mysql 启动 导入sql文件
mysql mysqld.exe mysqld.exe 是mysql的服务器进程,只有先启动这个进程才能连接服务器 dos下进入mysql文件目录下的bin目录,输入mysql -u root -p ...
- MYSQL 编码方式 ------导入 .sql 文件 报编码错误
在做计量泵上位机时,利用MYSQL存储数据,建表hisruninfo(计量泵历史运行数据表). 表格式为utf8,查过数据库 格式 同样为utf8 导入该hisruninfo.sql文件时,并没有报错 ...
- mysql导入.sql文件
1. source /home/susie ...../**.sql 2. \. /home/susie/.../**.sql 批量导入.sql文件 首先新建一个main.sql,然后在main.sq ...
- MySQL导入sql 文件的5大步骤
http://database.51cto.com/art/201005/200739.htm 以下的文章主要介绍的是MySQL导入sql 文件,即MySQL数据库导入导出sql 文件的实际操作步骤, ...
- mysql数据库导入sql文件时提示“Error Code: 1153 - Got a packet bigger than 'max_allowed_packet' bytes”解决办法
向mysql数据库中导入sql文件时,如果文件过大(几百M),会提示"Error Code: 1153 - Got a packet bigger than 'max_allowed_pac ...
- navicat导入.sql文件
用Navicat for Mysql导入.sql文件 虽然这算不上什么难事,但是对于新手来说(比如说我),Navicat for MySQL里的导出连接.运行SQL文件.导入向导.还原备份.这些功 ...
随机推荐
- day03_12/13/2016_bean属性的设置之setter方法注入
- P2639 [USACO09OCT]Bessie的体重问题Bessie's We…
题目描述 Bessie像她的诸多姊妹一样,因为从Farmer John的草地吃了太多美味的草而长出了太多的赘肉.所以FJ将她置于一个及其严格的节食计划之中.她每天不能吃多过H (5 <= H & ...
- python基础篇(一)-------- 字符串的操作
1.字符串的常用操作: 已知字符串:str = "hello world zhangsan and zhangsan" 1.字符串的长度:len(str) 2.查看字符串的索引值: ...
- Json——转义符
C#后台直接输出Json字符串需要反斜杠“\” context.Response.Write("[{\"Name\": \"wqx\", \" ...
- 控制台——屏蔽Ctrl+C快捷键对窗体的关闭功能
导入SetCtrlHandlerHandler API //定义处理程序委托 public delegate bool ConsoleCtrlDelegate(int ctrlType); //导入S ...
- [Windows Server 2008] Serv-U安全设置
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:Serv- ...
- dom4j.jar 的调试方法
1.将jar包的路径写在 classpath下 在cmd窗口中,查看 classpath的内容是否已经加上该路径,win7 下cmd窗口一定要是管理员身份执行 2.在D盘新建一个DOM4JWriter ...
- HDU_2203_KMP入门
亲和串 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- ARX自定义实体
本文介绍了构造自定义实体的步骤.必须继承的函数和必须注意的事项 1.新建一个从AcDbEntity继承的类,如EntTest,必须添加的头文件: "stdarx.h"," ...
- 怎么用最短时间高效而踏实地学习Linux?
在技术行业里,人才的唯一衡量标准就是技术能力,而技术能力,就代表着你的薪资.职位.话语权.很多人都经历过,跟自己同时入行甚至入行还晚的人,成长速度却远超自己,短短两三年就拉开了差距. 秘密就在于,有些 ...