php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)


Posted in PHP onJuly 31, 2012

/**
* $splitChar 字段分隔符
* $file 数据文件文件名
* $table 数据库表名
* $conn 数据库连接
* $fields 数据对应的列名
* $insertType 插入操作类型,包括INSERT,REPLACE
*/

<?php 
/** 
* $splitChar 字段分隔符 
* $file 数据文件文件名 
* $table 数据库表名 
* $conn 数据库连接 
* $fields 数据对应的列名 
* $insertType 插入操作类型,包括INSERT,REPLACE 
*/ 
function loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields=array(),$insertType='INSERT'){ 
if(empty($fields)) $head = "{$insertType} INTO `{$table}` VALUES('"; 
else $head = "{$insertType} INTO `{$table}`(`".implode('`,`',$fields)."`) VALUES('"; //数据头 
$end = "')"; 
$sqldata = trim(file_get_contents($file)); 
if(preg_replace('/\s*/i','',$splitChar) == '') { 
$splitChar = '/(\w+)(\s+)/i'; 
$replace = "$1','"; 
$specialFunc = 'preg_replace'; 
}else { 
$splitChar = $splitChar; 
$replace = "','"; 
$specialFunc = 'str_replace'; 
} 
//处理数据体,二者顺序不可换,否则空格或Tab分隔符时出错 
$sqldata = preg_replace('/(\s*)(\n+)(\s*)/i','\'),(\'',$sqldata); //替换换行 
$sqldata = $specialFunc($splitChar,$replace,$sqldata); //替换分隔符 
$query = $head.$sqldata.$end; //数据拼接 
if(mysql_query($query,$conn)) return array(true); 
else { 
return array(false,mysql_error($conn),mysql_errno($conn)); 
} 
} 
//调用示例1 
require 'db.php'; 
$splitChar = '|'; //竖线 
$file = 'sqldata1.txt'; 
$fields = array('id','parentid','name'); 
$table = 'cengji'; 
$result = loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields); 
if (array_shift($result)){ 
echo 'Success!<br/>'; 
}else { 
echo 'Failed!--Error:'.array_shift($result).'<br/>'; 
} 
/*sqlda ta1.txt 
|0|A 
|1|B 
|1|C 
|2|D 
-- cengji 
CREATE TABLE `cengji` ( 
`id` int(11) NOT NULL AUTO_INCREMENT, 
`parentid` int(11) NOT NULL, 
`name` varchar(255) DEFAULT NULL, 
PRIMARY KEY (`id`), 
UNIQUE KEY `parentid_name_unique` (`parentid`,`name`) USING BTREE 
) ENGINE=InnoDB AUTO_INCREMENT=1602 DEFAULT CHARSET=utf8 
*/ 
//调用示例2 
require 'db.php'; 
$splitChar = ' '; //空格 
$file = 'sqldata2.txt'; 
$fields = array('id','make','model','year'); 
$table = 'cars'; 
$result = loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields); 
if (array_shift($result)){ 
echo 'Success!<br/>'; 
}else { 
echo 'Failed!--Error:'.array_shift($result).'<br/>'; 
} 
/* sqldata2.txt 
Aston DB19 2009 
Aston DB29 2009 
Aston DB39 2009 
-- cars 
CREATE TABLE `cars` ( 
`id` int(11) NOT NULL AUTO_INCREMENT, 
`make` varchar(16) NOT NULL, 
`model` varchar(16) DEFAULT NULL, 
`year` varchar(16) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 
*/ 
//调用示例3 
require 'db.php'; 
$splitChar = ' '; //Tab 
$file = 'sqldata3.txt'; 
$fields = array('id','make','model','year'); 
$table = 'cars'; 
$insertType = 'REPLACE'; 
$result = loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields,$insertType); 
if (array_shift($result)){ 
echo 'Success!<br/>'; 
}else { 
echo 'Failed!--Error:'.array_shift($result).'<br/>'; 
} 
/* sqldata3.txt 
Aston DB19 2009 
Aston DB29 2009 
Aston DB39 2009 
*/ 
//调用示例3 
require 'db.php'; 
$splitChar = ' '; //Tab 
$file = 'sqldata3.txt'; 
$fields = array('id','value'); 
$table = 'notExist'; //不存在表 
$result = loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields); 
if (array_shift($result)){ 
echo 'Success!<br/>'; 
}else { 
echo 'Failed!--Error:'.array_shift($result).'<br/>'; 
} 
//附:db.php 
/* //注释这一行可全部释放 
?> 
<?php 
static $connect = null; 
static $table = 'jilian'; 
if(!isset($connect)) { 
$connect = mysql_connect("localhost","root",""); 
if(!$connect) { 
$connect = mysql_connect("localhost","Zjmainstay",""); 
} 
if(!$connect) { 
die('Can not connect to database.Fatal error handle by /test/db.php'); 
} 
mysql_select_db("test",$connect); 
mysql_query("SET NAMES utf8",$connect); 
$conn = &$connect; 
$db = &$connect; 
} 
?> 
//*/

数据表结构
-- 数据表结构: 
-- 100000_insert,1000000_insert 
CREATE TABLE `100000_insert` ( 
`id` int(11) NOT NULL AUTO_INCREMENT, 
`parentid` int(11) NOT NULL, 
`name` varchar(255) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 
100000 (10万)行插入:Insert 100000_line_data use 2.5534288883209 seconds 
1000000(100万)行插入:Insert 1000000_line_data use 19.677318811417 seconds 
//可能报错:MySQL server has gone away 
//解决:修改my.ini/my.cnf max_allowed_packet=20M

作者:Zjmainstay
PHP 相关文章推荐
针对初学PHP者的疑难问答(1)
Oct 09 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
Nov 03 PHP
PHP垃圾回收机制引用计数器概念分析
Jun 24 PHP
php快递单号查询接口使用示例
May 05 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
PHP从数组中删除元素的四种方法实例
May 12 PHP
PHP使用反向Ajax技术实现在线客服系统详解
Jul 01 PHP
PHP实现财务审核通过后返现金额到客户的功能
Jul 04 PHP
php使用pecl方式安装扩展操作示例
Aug 12 PHP
Laravel中GraphQL接口请求频率实战记录
Sep 01 PHP
PHP获取真实IP及IP模拟方法解析
Nov 24 PHP
php切割页面div内容的实现代码分享
Jul 31 #PHP
php中数组首字符过滤功能代码
Jul 31 #PHP
PHP常用开发函数解析之数组篇[未完结]
Jul 30 #PHP
php中拷贝构造函数、赋值运算符重载
Jul 25 #PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
Jul 23 #PHP
php 调试利器debug_print_backtrace()
Jul 23 #PHP
全新的PDO数据库操作类php版(仅适用Mysql)
Jul 22 #PHP
You might like
理解PHP5中static和const关键字的区别
2007/03/19 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
过虑特殊字符输入的js代码
2010/08/05 Javascript
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
在Vue中使用highCharts绘制3d饼图的方法
2018/02/08 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
JS实现鼠标移动拖尾
2020/12/27 Javascript
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
python基于plotly实现画饼状图代码实例
2019/12/16 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
大专毕业生简历的自我评价
2013/10/20 职场文书
留学推荐信怎么写
2014/01/25 职场文书
办公室文员自荐书
2014/02/03 职场文书
法律系毕业生求职信
2014/05/28 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
2015年清明节活动总结
2015/02/09 职场文书