php實(shí)現(xiàn)文本數(shù)據(jù)導(dǎo)入SQL SERVER
我測(cè)試是支持的CSV,SQL,TXT
其實(shí)其他格式也可以,只不過(guò)我用不到而已
速度是差不多是每秒一萬(wàn)吧
<?php
set_time_limit(0);
ignore_user_abort(true);
include('sgk.php');
echo "<br><br>";
?>
<?php
function array_iconv($data,$output = 'GBK') {
$encode_arr = array('UTF-8','ASCII','GBK','GB2312','BIG5','JIS','eucjp-win','sjis-win','EUC-JP');
$encoded = mb_detect_encoding($data, $encode_arr);//自動(dòng)判斷編碼
if (!is_array($data)) {
return mb_convert_encoding($data, $output, $encoded);
}
else {
foreach ($data as $key=>$val) {
if(is_array($val)) {
$data[$key] = array_iconv($val, $input, $output);
} else {
$data[$key] = mb_convert_encoding($data, $output, $encoded);
}
}
return $data;
}
}
function microtime_float(){
return microtime(true);
}
if ($_SESSION['id']<>''){
if (@$_POST["submit"]<>""){
if ((($_FILES["file"]["type"] == "text/plain")
|| ($_FILES["file"]["type"] == "application/vnd.ms-excel") || ($_FILES["file"]["type"] == "application/octet-stream")
|| ($_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
&& ($_FILES["file"]["size"] < 198102805))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
$name=$_FILES["file"]["name"];
$name=iconv('utf-8', 'GB2312//IGNORE', $_FILES['file']['name']);
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1048576) . " Mb<br />";
$exit= pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
$exit='.' .$exit;
if ($exit==".asp" or $exit==".php" or $exit==".jsp" OR $exit==".aspx"){
echo "我擦,你想做什么?";
exit;
}
$size=filesize($_FILES["file"]["tmp_name"]);
$_FILES["file"]["name"]=md5($_FILES["file"]["name"].$size).$exit;
if (file_exists("uploadhehe/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " 已經(jīng)存在 ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"uploadhehe/" . $_FILES["file"]["name"]);
echo "<br>開(kāi)始自動(dòng)處理文件<br>";
$begin = microtime_float();
$file="uploadhehe/" . $_FILES["file"]["name"];
$handle = @fopen($file, "r");
//$handle=array_iconv('utf-8','gbk',$handle);
$total=0;
$over=0;
if ($handle) {
$sql="INSERT INTO [dbo].[own_user_data1] ([Name],[Context],[md5],[data]) VALUES";
$num=0;
$_FILES['file']['name']=iconv('utf-8', 'GB2312//IGNORE', $_FILES['file']['name']);
while (!feof($handle)) {
$buffer = fgets($handle, 2000);
$buffer=str_replace("\n", "", $buffer);
$line_array=explode("\r\n", $buffer);
$Context=htmlspecialchars(addslashes($line_array[0]));
$Context=str_replace("'", ',', $Context);
$Context=str_replace('"', ',', $Context);
$Context=array_iconv($Context);
$date=date('y-m-d h:i:s',time());
if($num<999){
$sql.="('{$name}','{$Context}','{$_FILES['file']['name']}','{$date}'),";
}else{
$sql.="('{$name}','{$Context}','{$_FILES['file']['name']}','{$date}')";
$a=sqlsrv_query($conn,$sql);
// if( $a === false ) {
// die( print_r( sqlsrv_errors(), true));
// }
$num=0;
$sql="INSERT INTO [dbo].[own_user_data1] ([Name],[Context],[md5],[data]) VALUES";
}
$num++;
$total++;
}
}
fclose($handle);
$sql1="INSERT INTO [dbo].[own_user_info] ([uid],[md5],[date],[name],[size],[gold]) VALUES ('{$_SESSION["id"]}','{$_FILES["file"]["name"]}','{$date}','{$name}','{$total}','1')";
sqlsrv_query($conn,$sql1);
if( $a === false ) {
die( print_r( sqlsrv_errors(), true));
}
//處理沒(méi)有插入到數(shù)據(jù)庫(kù)的記錄
if(substr($sql, strlen($sql)-1,1)==","){
$sql=substr($sql, 0,strlen($sql)-1);
sqlsrv_query($conn,$sql);
}
$end = microtime_float();
$time = $end-$begin;
echo "共導(dǎo)入{$total}條記錄,耗時(shí){$time}秒";
}
}
}
else
{
echo "上傳失敗!";
}
}
}else{
header("Location: login.php");
}
?>
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
- PHP連接SQLSERVER 注意事項(xiàng)(附dll文件下載)
- PHP連接SQLServer2005的實(shí)現(xiàn)方法(附ntwdblib.dll下載)
- php插入中文到sqlserver 2008里出現(xiàn)亂碼的解決辦法分享
- php5.3中連接sqlserver2000的兩種方法(com與ODBC)
- Linux下php連接SQLServer 2000數(shù)據(jù)庫(kù)的配置方法
- Linux編譯mssql擴(kuò)展使用php連接sqlserver2008的使用步驟
- PHP連接SQLServer2005方法及代碼
- php使用pdo連接sqlserver示例分享
- php5.3以后的版本連接sqlserver2000的方法
- Win2003+apache+PHP+SqlServer2008 配置生產(chǎn)環(huán)境
- php使用sql server驗(yàn)證連接數(shù)據(jù)庫(kù)的方法
- PHP連接SQLServer2005的方法
- php如何連接sql server
相關(guān)文章
ThinkPHP框架實(shí)現(xiàn)用戶信息查詢更新及刪除功能示例
這篇文章主要介紹了ThinkPHP框架實(shí)現(xiàn)用戶信息查詢更新及刪除功能,結(jié)合實(shí)例形式分析了thinkPHP框架數(shù)據(jù)庫(kù)配置、控制與模板調(diào)用實(shí)現(xiàn)信息查詢、更新、刪除等功能相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
vscode運(yùn)行php報(bào)錯(cuò)php?not?found解決辦法
這篇文章主要給大家介紹了關(guān)于vscode運(yùn)行php報(bào)錯(cuò)php?not?found的解決辦法,這個(gè)問(wèn)題可能是由于您的計(jì)算機(jī)上沒(méi)有安裝PHP或者VS?Code沒(méi)有正確配置PHP的路徑所導(dǎo)致的,文中將解決的辦法介紹的很詳細(xì),需要的朋友可以參考下2023-07-07
Yii框架使用PHPExcel導(dǎo)出Excel文件的方法分析【改進(jìn)版】
這篇文章主要介紹了Yii框架使用PHPExcel導(dǎo)出Excel文件的方法,結(jié)合實(shí)例形式分析了Yii框架配置、導(dǎo)入PHPExcel組件以及調(diào)用PHPExcel導(dǎo)出Excel文件的相關(guān)操作技巧,需要的朋友可以參考下2019-07-07
laravel中短信發(fā)送驗(yàn)證碼的實(shí)現(xiàn)方法
在做用戶注冊(cè)和個(gè)人中心的安全管理時(shí)常常需要用到短信發(fā)送驗(yàn)證碼,下面這篇文章主要給大家介紹了關(guān)于laravel中短信發(fā)送驗(yàn)證碼的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
Bo-Blog專用的給Windows服務(wù)器的IIS Rewrite程序
Bo-Blog專用的給Windows服務(wù)器的IIS Rewrite程序...2007-08-08
PHP在彈框中獲取foreach中遍歷的id值并傳遞給地址欄
這篇文章主要介紹了PHP在彈框中獲取foreach中遍歷的id值并傳遞給地址欄的相關(guān)資料,需要的朋友可以參考下2017-06-06
laradock環(huán)境docker-compose操作詳解
在本篇文章中小編給大家整理的是關(guān)于laradock環(huán)境docker-compose操作的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們參考學(xué)習(xí)下。2019-07-07
php設(shè)計(jì)模式之狀態(tài)模式實(shí)例分析【星際爭(zhēng)霸游戲案例】
這篇文章主要介紹了php設(shè)計(jì)模式之狀態(tài)模式,結(jié)合星際爭(zhēng)霸游戲案例形式分析了php狀態(tài)模式相關(guān)原理、使用技巧與注意事項(xiàng),需要的朋友可以參考下2020-03-03
PHP隨手筆記整理之PHP腳本和JAVA連接mysql數(shù)據(jù)庫(kù)
這篇文章主要介紹了PHP隨手筆記整理之PHP腳本和JAVA連接mysql數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下2015-11-11

