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+DBM的同学录程序(5)
Oct 09 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
Mar 24 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
PHP中isset与array_key_exists的区别实例分析
Jun 02 PHP
CodeIgniter基于Email类发邮件的方法
Mar 29 PHP
PHP中empty,isset,is_null用法和区别
Feb 19 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
Jul 03 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
Apr 26 PHP
Laravel如何同时连接多个数据库详解
Aug 13 PHP
解决php extension 加载顺序问题
Aug 16 PHP
Laravel实现ORM带条件搜索分页
Oct 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
基于mysql的bbs设计(五)
2006/10/09 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
php写app用的框架整理
2019/09/29 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
Angular实现响应式表单
2017/08/04 Javascript
vue中v-model动态生成的实例详解
2017/10/27 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
简明 Python 基础学习教程
2007/02/08 Python
Django中处理出错页面的方法
2015/07/15 Python
python 整数越界问题详解
2019/06/27 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
keras输出预测值和真实值方式
2020/06/27 Python
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
小学教师培训感言
2014/02/11 职场文书
《藏戏》教学反思
2014/02/11 职场文书
yy司仪主持词
2014/03/22 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
母亲节寄语大全
2015/02/27 职场文书
幼儿园小班教学反思
2016/03/03 职场文书