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 相关文章推荐
Windows下PHP5和Apache的安装与配置
Sep 05 PHP
使用sockets:从新闻组中获取文章(一)
Oct 09 PHP
用PHP和ACCESS写聊天室(五)
Oct 09 PHP
网页游戏开发入门教程二(游戏模式+系统)
Nov 02 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 PHP
PHP数据类型的总结分析
Jun 13 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 PHP
php 获取xml接口数据的处理方法
May 31 PHP
php如何计算两坐标点之间的距离
Dec 29 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
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
php实现读取内存顺序号
2015/03/29 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
匡威英国官网:Converse英国
2018/12/02 全球购物
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
公司业务主管岗位职责
2013/12/07 职场文书
茶叶店创业计划书范文
2014/01/19 职场文书
安全生产汇报材料
2014/02/17 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
天地会口号
2014/06/17 职场文书
建筑工地标语
2014/06/18 职场文书
党员演讲稿
2014/09/04 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
亮剑精神观后感
2015/06/05 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python
python多线程方法详解
2022/01/18 Python
Windows Server 2012 R2 磁盘分区教程
2022/04/29 Servers