把用制表符分隔的文本导入到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 );