php将文本文件导入mysql我们经常遇到,但是如果是导入到sqlserver又应该如何操作呢,下面就给大家分享一下本人的操作方法,感觉效率还不错,这里推荐给大家。
我测试是支持的CSV,SQL,TXT
其实其他格式也可以,只不过我用不到而已
速度是差不多是每秒一万吧
- <?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"] . " 已经存在 ";
- }
- 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));
- }
- //处理没有插入到数据库的记录
- 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 "共导入{$total}条记录,耗时{$time}秒";
- }
- }
- }
- else
- {
- echo "上传失败!";
- }
- }
- }else{
- header("Location: login.php");
- }
- ?>
以上所述就是本文的全部内容了,希望大家能够喜欢。
新闻热点
疑难解答