Home  >  Article  >  Backend Development  >  PHP reads the txt file to form SQL and inserts it into the database code (original from Zjmainstay)_PHP tutorial

PHP reads the txt file to form SQL and inserts it into the database code (original from Zjmainstay)_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:17:15812browse

/**
* $splitChar field separator
* $file data file file name
* $table database table name
* $conn database connection
* $fields column name corresponding to the data
* $insertType insert operation type, including INSERT, REPLACE
*/

Copy code The code is as follows:

/**
* $splitChar field separator
* $file data file file name
* $table database table name
* $conn database connection
* $fields column name corresponding to the data
* $insertType insert operation type, including 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('"; //Data header
$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';
}
//Processing the data body, the order of the two cannot be exchanged, otherwise an error will occur when using spaces or tab separators
$sqldata = preg_replace('/(s*)(n+)(s*)/i',' '),('',$sqldata); //Replace newline
$sqldata = $specialFunc($splitChar,$replace,$sqldata); //Replace separator
$query = $head.$sqldata .$end; //Data splicing
if(mysql_query($query,$conn)) return array(true);
else {
return array(false,mysql_error($conn),mysql_errno($ conn));
}
}
//Call example 1
require 'db.php';
$splitChar = '|'; //Vertical bar
$file = 'sqldata1.txt';
$fields = array('id','parentid','name');
$table = 'cengji';
$result = loadTxtDataIntoDatabase($splitChar,$file ,$table,$conn,$fields);
if (array_shift($result)){
echo 'Success!
';
}else {
echo 'Failed !--Error:'.array_shift($result).'
';
}
/*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
*/
//Call example 2
require 'db.php';
$splitChar = ' '; //space
$file = 'sqldata2.txt';
$fields = array('id','make','model','year');
$table = 'cars';
$result = loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields);
if (array_shift($result)){
echo 'Success!
';
}else {
echo 'Failed!--Error:'.array_shift($result).'
';
}
/* 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
*/
//Call example 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!
';
}else {
echo 'Failed!--Error:'.array_shift($result).'
';
}
/* sqldata3.txt
Aston DB19 2009
Aston DB29 2009
Aston DB39 2009
*/
//Call example 3
require 'db.php';
$splitChar = ' '; //Tab
$ file = 'sqldata3.txt';
$fields = array('id','value');
$table = 'notExist'; //Table does not exist
$result = loadTxtDataIntoDatabase($splitChar ,$file,$table,$conn,$fields);
if (array_shift($result)){
echo 'Success!
';
}else {
echo 'Failed!--Error:'.array_shift($result).'
';
}
//Attachment: db.php
/* //Comment this line Release all
?>
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;
}
?>
//*/

Data table structure
Copy code The code is as follows:

--Data table structure:
-- 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 (100,000 ) Row insertion: Insert 100000_line_data use 2.5534288883209 seconds
1000000 (1 million) row insertion: Insert 1000000_line_data use 19.677318811417 seconds
//Possible error: MySQL server has gone away
//Solution: Modify my. ini/ my.cnf max_allowed_packet=20M

Author: Zjmainstay

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/325790.htmlTechArticle/** * $splitChar field separator* $file data file file name* $table database table name* $ conn Database connection* $fields Column name corresponding to data* $insertType Insertion operation type, including...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn