PHP导入phpmyadmin或navicat导出的.sql文件里的数据
更新:2022-11-08 14:43:26
人气:740
来源:本站原创
A+
实现PHP导入由phpmyadmin或navicat导出的MYSQL备份文件.sql数据库文件里的数据,直接获取并导入会报错,因为里面的格式都以下这种断行的语句,不能识别需要处理一下格式。
DROP TABLE IF EXISTS `dangxiao_zichan_chushihua`; CREATE TABLE `dangxiao_zichan_chushihua` ( `id` int NOT NULL AUTO_INCREMENT, `title` varchar(200) NOT NULL, `dh` varchar(100) NOT NULL, `indate` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3; INSERT INTO `dangxiao_quanxian_title` VALUES (53, '4', '资产初始化管理', 200); INSERT INTO `dangxiao_quanxian_info` VALUES ('1243', '53', '创建初始化任务', 'ZC-CHUSH-001', '1500'); INSERT INTO `dangxiao_quanxian_info` VALUES ('1244', '53', '初始化任务管理', 'ZC-CHUSH-002', '1510');
下面就给出具体导入.sql数据的代码,里面$mysqli - >query()之前需要连接数据库,用自己的连接方法就行了,这个不用多说。
function split_sql($sql) {//处理.sql文件中分行的sql $sql = trim($sql); $sql = str_replace("\r\n", "\n", $sql); $buffer = array(); $ret = array(); $in_string = false; for ($i = 0; $i < strlen($sql) - 1; $i++) { if ($sql[$i] == ";" && !$in_string) { $ret[] = substr($sql, 0, $i); $sql = substr($sql, $i + 1); $i = 0; } if ($in_string && ($sql[$i] == $in_string) && $buffer[1] != "\\") { $in_string = false; } elseif(!$in_string && ($sql[$i] == '"' || $sql[$i] == "'") && (!isset($buffer[0]) || $buffer[0] != "\\")) { $in_string = $sql[$i]; } if (isset($buffer[1])) { $buffer[0] = $buffer[1]; } $buffer[1] = $sql[$i]; } if (!empty($sql)) { $ret[] = $sql; } return ($ret); } $sql_file = "bak/sql.sql"; //导出的数据库脚本文件 $mysqli - >query("SET NAMES utf8");//设置编码格式 $query = fread(fopen($sql_file, "r"), filesize($sql_file)); $sqls_array = split_sql($query); for ($i = 0; $i < count($sqls_array); $i++) { $sqls_array[$i] = trim($sqls_array[$i]); if (!empty($sqls_array[$i]) && $sqls_array[$i] != "#") { $mysqli - >query($sqls_array[$i]); //逐行执行sql } } echo "数据库更新完成!".date("Y-m-d H:i:s");
推荐的文章
随手记
- ● 自制(IP或域名)可信任的SSL证书,适用360、chrome等浏览器
- ● windows系统下php无法使用curl怎么办?
- ● 绿联UGREENKVM切换器(分屏器)快捷键丢失解决办法
- ● 统信UOS开机指定网址全屏启动自带浏览器以及屏蔽ALT+F4关闭
- ● xshellSSH连接Linux服务器防止超时退出
- ● php8开启OpenSSL扩展库报错disabledinstallext
- ● 统信系统linux安装php时的报错libxml-2.0>=2.7.6
- ● tidb关闭sql_mode=ONLY_FULL_GROUP_BY模式
- ● windows10如何开机自动运行bat文件
- ● Win10Mysql8初始密码丢失,初始化又不显示密码
PHP经验分享
- ● PHP批量对TCP服务端指定多个IP非阻塞检查在线状态
- ● python实现TCP服务端持续接收关机、重启指令并输出结果【系列三】
- ● PHP给TCP服务端发送指令【系列二】
- ● PHP判断TCP服务端是否在线【系列一】
- ● PHP判断远程文件是否存在
- ● LINUX下用PHP获取CPU型号、内存占用、硬盘占用等信息代码
- ● PHP代码用UDP方式远程唤醒电脑让计算机开机
- ● apache下php生成验证码图片不能显示
- ● PHP使用AES加密解密示例(无偏移)
- ● Pluginmysql_native_passwordreported:''mysql_native_password'isdeprecate问题