把用制表符分隔的文本导入到mysql数据库中。
把用制表符分隔的文本导入到mysql数据库中。
header("Content-type:text/html;charset=utf-8"); //强制页面以utf-8编码显示,跟前面要导入的文件的编码要一致。 $dbServer = "mysql"; $dbHostname = "localhost"; $dbUsername = "你的用户名"; $dbPassword = "密码"; $dbName = "数据库名"; $conn = mysql_connect($dbHostname, $dbUsername, $dbPassword) or die("无法建立连接: " . mysql_error()); //连接数据库. mysql_select_db( $dbName ) or die ( "打开数据库失败: ".mysql_error() ); mysql_query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=utf8;"); $file=@fopen("1.txt","r") or die("打开文件失败"); // 以只读方式打开1.txt文件。 //下面循环读取每一行。 while(!feof($file)){ $val=fgets($file); //下面一步很关键,用explode()将每一行转换为数组来存储每个字段的值。 $values=explode("\t",trim($val)); //注意用来分割的是制表符”\t”,而不是空格” ” ,自己也可以输出来测试一下。 $values[0]=substr($values[0], -6); // 取后面6个字符 $values[1]=trim($values[1]); // 去空格 $t1=time(); $s1=floor($values[2]); // 把小数点后面的去掉 echo $values[0]."-".$values[1]."+:".$values[2]." ||"; //显示看看 $result = mysql_query("select * from tab1 where aaa=$values[0]"); if(mysql_num_rows($result)) {$sql="update bqstock_items set section=$s1 where aaa=$values[0]"; if (is_numeric($values[2])) {mysql_query($sql); echo("记录存在,更新成功<br>");} else {echo("记录存在,但导入的数据不是数值。<br>");} } else { //如果不存在,则插入数据 $sql="INSERT INTO `tab1` ( `title`, `author`) VALUES ('$values[1]', '$values[0]')"; mysql_query($sql); echo("记录不存在,插入数据。<br>"); } } fclose($file); mysql_close( $conn );