php實(shí)現(xiàn)文本數(shù)據(jù)導(dǎo)入SQL SERVER
我測試是支持的CSV,SQL,TXT
其實(shí)其他格式也可以,只不過我用不到而已
速度是差不多是每秒一萬吧
<?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);//自動判斷編碼
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>開始自動處理文件<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));
}
//處理沒有插入到數(shù)據(jù)庫的記錄
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}條記錄,耗時{$time}秒";
}
}
}
else
{
echo "上傳失敗!";
}
}
}else{
header("Location: login.php");
}
?>
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
- PHP連接SQLSERVER 注意事項(附dll文件下載)
- PHP連接SQLServer2005的實(shí)現(xiàn)方法(附ntwdblib.dll下載)
- php插入中文到sqlserver 2008里出現(xiàn)亂碼的解決辦法分享
- php5.3中連接sqlserver2000的兩種方法(com與ODBC)
- Linux下php連接SQLServer 2000數(shù)據(jù)庫的配置方法
- 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ù)庫的方法
- PHP連接SQLServer2005的方法
- php如何連接sql server
相關(guān)文章
laravel利用中間件做防非法登錄和權(quán)限控制示例
今天小編就為大家分享一篇laravel利用中間件做防非法登錄和權(quán)限控制示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
使用PHP抓取微博數(shù)據(jù)實(shí)現(xiàn)demo及原理解析
這篇文章主要為大家介紹了使用PHP抓取微博數(shù)據(jù)實(shí)現(xiàn)demo及原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
CI框架常用經(jīng)典操作類總結(jié)(路由,偽靜態(tài),分頁,session,驗(yàn)證碼等)
這篇文章主要介紹了CI框架常用經(jīng)典操作類,結(jié)合實(shí)例形式總結(jié)分析了CI框架URL、路由、偽靜態(tài)、分頁、session、驗(yàn)證碼等相關(guān)操作類與使用技巧,需要的朋友可以參考下2016-11-11
PHP setTime 設(shè)置當(dāng)前時間的代碼
在用JAVA中有個 Calendar 可設(shè)置當(dāng)前時間,在PHP中找了半天,終于給我找到了這個函數(shù),嘎嘎2012-08-08
thinkphp框架實(shí)現(xiàn)路由重定義簡化url訪問地址的方法分析
這篇文章主要介紹了thinkphp框架實(shí)現(xiàn)路由重定義簡化url訪問地址的方法,結(jié)合實(shí)例形式分析了thinkphp路由重定義及url地址訪問相關(guān)操作技巧與注意事項,需要的朋友可以參考下2020-04-04
Thinkphp中數(shù)據(jù)按分類嵌套循環(huán)實(shí)現(xiàn)方法
這篇文章主要介紹了Thinkphp中數(shù)據(jù)按分類嵌套循環(huán)實(shí)現(xiàn)方法,適用于嵌套循環(huán)具有關(guān)聯(lián)性的情況,是比較實(shí)用的技巧,需要的朋友可以參考下2014-10-10
基于laravel-admin 后臺 列表標(biāo)簽背景的使用方法
今天小編就為大家分享一篇基于laravel-admin 后臺 列表標(biāo)簽背景的使用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10

