$start_time =microtime_float();
$db =mysqli_connect( 'localhost' , 'root' , 'root' , 'test' );
$file = fopen ( 'f:/10-million-combos.txt' , 'rb' );
mysqli_query( $db , "DROP TABLE IF EXISTS `ten_million_account`;" );
mysqli_query( $db , "CREATE TABLE `test`.`ten_million_account`( `account_id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT, `account` VARCHAR(100) NOT NULL, `password` VARCHAR(200) NOT NULL, PRIMARY KEY (`account_id`) ) ENGINE=MYISAM CHARSET=utf8 COLLATE=utf8_general_ci; " );
//mysqli_query($db,"TRUNCATE ten_million_account;");
$sql = "INSERT INTO ten_million_account(`account`,`password`) VALUES('%s','%s');" ;
$count =1;
while ( $row = fgets ( $file )){
echo $row ;
$data =preg_split( "@\s.*?@" , $row );
if ( $data && ! empty ( $data [0]) && ! empty ( $data [1])){
mysqli_query( $db ,sprintf( $sql , $data [0], $data [1]));
}
$count ++;
unset( $row );
unset( $data );
}
echo "\n run time:" .(microtime_float()- $start_time );
function microtime_float ()
{
list( $usec , $sec ) = explode ( " " , microtime ());
return ((float) $usec + (float) $sec );
}
[代码]改进高效版
$start_time =microtime_float();
$db =mysqli_connect( 'localhost' , 'root' , 'root' , 'test' );
$file = fopen ( 'f:/10-million-combos.txt' , 'rb' );
mysqli_query( $db , "DROP TABLE IF EXISTS `ten_million_account`;" );
mysqli_query( $db , "CREATE TABLE `test`.`ten_million_account`( `account_id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT, `account` VARCHAR(100) NOT NULL, `password` VARCHAR(200) NOT NULL, PRIMARY KEY (`account_id`) ) ENGINE=MYISAM CHARSET=utf8 COLLATE=utf8_general_ci; " );
//mysqli_query($db,"TRUNCATE ten_million_account;");
$sql = "INSERT INTO `test`.ten_million_account(`account`,`password`) VALUES %s;" ;
$count =1;
$conj = $values_str = '' ;
while ( $row = fgets ( $file )){
//echo $row;
$data =preg_split( "@\s.*?@" , addslashes ( $row ));
if ( $data && ! empty ( $data [0]) && ! empty ( $data [1])){
//mysqli_query($db,sprintf($sql,$data[0],$data[1]));
$values_str .= $conj . "('" . $data [0]. "','" . $data [1]. "')" ;
$conj = ',' ;
}
unset( $row );
unset( $data );
if (( $count %10000)==0){
if ( $values_str ){
echo $count . "\n" ;
if (!mysqli_query( $db ,sprintf( $sql , $values_str ))){
echo sprintf( $sql , $values_str ). "\n" ;
exit ;
}
} else {
exit ;
}
$values_str = $conj = '' ;
}
$count ++;
}
if ( $values_str ){
mysqli_query( $db ,sprintf( $sql , $values_str ));
}
echo "\n run time:" .(microtime_float()- $start_time );
function microtime_float ()
{
list( $usec , $sec ) = explode ( " " , microtime ());
return ((float) $usec + (float) $sec );
}
下载地址: 如何利用php读取txt文件再将数据插入到数据库? PHP Database ODBC |