php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2023-06-13 09:14:34 时间
/**
*$splitChar字段分隔符
*$file数据文件文件名
*$table数据库表名
*$conn数据库连接
*$fields数据对应的列名
*$insertType插入操作类型,包括INSERT,REPLACE
*/
复制代码代码如下:
*$splitChar字段分隔符
*$file数据文件文件名
*$table数据库表名
*$conn数据库连接
*$fields数据对应的列名
*$insertType插入操作类型,包括INSERT,REPLACE
*/
<?php
/**
*$splitChar字段分隔符
*$file数据文件文件名
*$table数据库表名
*$conn数据库连接
*$fields数据对应的列名
*$insertType插入操作类型,包括INSERT,REPLACE
*/
functionloadTxtDataIntoDatabase($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))returnarray(true);
else{
returnarray(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/>";
}
/*sqldata1.txt
|0|A
|1|B
|1|C
|2|D
--cengji
CREATETABLE`cengji`(
`id`int(11)NOTNULLAUTO_INCREMENT,
`parentid`int(11)NOTNULL,
`name`varchar(255)DEFAULTNULL,
PRIMARYKEY(`id`),
UNIQUEKEY`parentid_name_unique`(`parentid`,`name`)USINGBTREE
)ENGINE=InnoDBAUTO_INCREMENT=1602DEFAULTCHARSET=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
AstonDB192009
AstonDB292009
AstonDB392009
--cars
CREATETABLE`cars`(
`id`int(11)NOTNULLAUTO_INCREMENT,
`make`varchar(16)NOTNULL,
`model`varchar(16)DEFAULTNULL,
`year`varchar(16)DEFAULTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBAUTO_INCREMENT=14DEFAULTCHARSET=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
AstonDB192009
AstonDB292009
AstonDB392009
*/
//调用示例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("Cannotconnecttodatabase.Fatalerrorhandleby/test/db.php");
}
mysql_select_db("test",$connect);
mysql_query("SETNAMESutf8",$connect);
$conn=&$connect;
$db=&$connect;
}
?>
//*/
数据表结构
--数据表结构:
--100000_insert,1000000_insert
CREATETABLE`100000_insert`(
`id`int(11)NOTNULLAUTO_INCREMENT,
`parentid`int(11)NOTNULL,
`name`varchar(255)DEFAULTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=utf8
100000(10万)行插入:Insert100000_line_datause2.5534288883209seconds
1000000(100万)行插入:Insert1000000_line_datause19.677318811417seconds
//可能报错:MySQLserverhasgoneaway
//解决:修改my.ini/my.cnfmax_allowed_packet=20M
作者:Zjmainstay
相关文章
- PHP 浏览器缓存_php缓存引擎
- PHP 5.6 如何使用 CURL 上传文件
- 的应用利用PHP中MySQL函数实现功能强大的数据库操作(php中mysql函数)
- php Yaf_Loader::import引入文件报错的解决方法详解编程语言
- 数据库解决PHP无法连接MySQL数据库的问题.(php无法连接mysql)
- PHP与MySQL数据库之间的连接(php链接mysql)
- PHP操作MySQL数据库实现排名(mysql排名php)
- PHP与MSSQL:高效开发数据驱动应用程序(php与mssql)
- PHP编译Redis:提升网站性能的利器(php编译redis)
- PHP读取Linux文件的方法(php读取linux文件)
- 基于PHP的Redis视频教程(redis视频教程php)
- 坚持不懈:用PHP实现MSSQL数据库连接(php链接mssql函数)
- PHP实现连接MS SQL数据库的实战指南(php 打开mssql)
- PHP如何连接MSSQL服务器(php怎么连mssql)
- 让PHP连接MSSQL数据库的正确方式(php如何连mssql)
- PHP实现MSSQL数据库分页功能(php分页类 mssql)
- 使用PHP连接MSSQL数据库的查询语句(php mssql 语句)
- PHP与MSSQL的融合——开启新的编程前程(php mssql 空白)
- PHP与MSSQL结合支持生僻字编辑(php mssql生僻字)
- PHP与MySQL实现三表关联操作(mysql三表关联pHP)
- Oracle和PHP完美配合提升数据库性能(oracle php配置)
- PHP文件上传功能实现代码
- PHP无刷新上传文件实现代码
- 关于访问控制的一首PHP面试题(对属性或方法的访问控制)