/**
* $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后台程序与Javascript的两种交互方式
Mootools 1.2教程 正则表达式
EXECUTE IMMEDIATE用法小结
Mootools 1.2 手风琴(Accordion)教程
SQLSERVER中union,cube,rollup,cumpute运算符使用说明
ASP 三层架构 Error处理类
asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别
JS 正则 时间验证
ORACLE实例的后台进程
asp.net HttpHandler实现图片防盗链
iisapp.vbs iis pid了解对应的网站或应用池
ASP.NET 在线文件管理
PHP 单引号与双引号的区别
实现JavaScript中继承的三种方式
css 有弹动效果的网页导航
jQuery animate效果演示
SQLServer2005中的SQLCMD工具使用
解决Nginx + PHP(FastCGI)遇到的502 Bad Gateway错误
SQL 随机查询 包括(sqlserver,mysql,access等)
js 验证 常用正则表达式集锦
Js 实现表格隔行换色一例
使用zend studio for eclipse不能激活代码提示功能的解决办法
JSP forward用法分析实例代码分析
JavaScript 常用函数库详解
JQuery打造PHP的AJAX表单提交实例
PHP CKEditor 上传图片实现代码
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
php面向对象全攻略 (十) final static const关键字的使用
php 分库分表hash算法
asp.net coolite 删除时弹出确定按钮
regini dos下更改注册表权限的工具
JavaScript数组应用 可依次读取的公告栏文字
asp.net cookie的读写实例
模仿JQuery sortable效果 代码有错但值得看看
单选按钮决定链接的网址
php 文件上传系统手记
jQuery 使用手册(二)
jQuery slider Content(左右控制移动)
mysql 备份与迁移 数据同步方法
javascript 面向对象编程 聊聊对象的事
Javascript 小写字母依次变为大写
php self,$this,const,static,-&gt;的使用
MSSQL 数据库同步教程
Red Hat Linux 安全设置方法
用Javascript 获取页面元素的位置的代码
在图片上单击获取图片原始大小
数据库中union 与union all 的区别
7个Javascript地图脚本整理