最近做一个报表系统,要求是从一个数据库里面读取出部分数据,将其放到一个新的数据库里面,然后对新数据库里面的数据进行加工。从而得到相应的报表系统。
首先第一个任务就是将数据提取到新的数据库里面,接下来说说我的心酸历程
最开始我 想的是直接mysql写的,但是发现公司的环境不支持,然后折腾的是mysqli…对mysqli简单研究下,发现它和mysql其实主要的用法差不多。
遇到的问题:1.数据库中文字符读取出来之后,直接变成问号
2.mysql server host要填写正确(此处当时我添加了http://然后直接给我报错了)
3. 要获取前一周的时间条件(此处date_sub得到的数据是2016-01-18这种形式,而之前数据库clock是时间戳,然后需要对clock进行处理才可以得到正确的时间)
where date_sub(curdate(), INTERVAL 7 DAY) <= DATE(FROM_UNIXTIME(clock))";
接下来,上源码
<?php
/**
* Created by PhpStorm.
* User: 梦大大
* Date: 2016/1/18
* Time: 16:27
* Description:这是获取test数据库中trends表中部分字段的值
*/
$mysqli=new mysqli('10.1.31.xx','root','','test');//这是链接的host,用户名,密码,还有数据库
if (mysqli_connect_errno()) {//判断是否成功连接
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
//解决中文乱码的问题
if (!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
printf("Current character set: %s\n", $mysqli->character_set_name());
}
$sql="SELECT itemid,clock,value_min,value_avg,value_max FROM trends where date_sub(curdate(), INTERVAL 7 DAY) <= DATE(FROM_UNIXTIME(clock))";
$result=$mysqli->query($sql);
//此处通过循环的办法,将获取到的数据插入到B数据库的B表当中
while($row=mysqli_fetch_assoc($result)){
$itemid=$row['itemid'];
$clock=$row['clock'];
$value_min=$row['value_min'];
$value_avg=$row['value_avg'];
/*echo $key_;
echo "<br>";*/
$value_max=$row['value_max'];
$mysqli2=new mysqli("10.1.31.xx","root","","B");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if (!$mysqli2->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $mysqli2->error);
} else {
printf("Current character set: %s\n", $mysqli->character_set_name());
}
$query2="INSERT INTO trends(itemid,clock,value_min,value_avg,value_max) VALUES('$itemid','$clock','$value_min','$value_avg','$value_max')";
if($mysqli2->query($query2)==true){
echo "sucess";
echo "<br>";
}else{
echo "fail";
}
$mysqli2->close();
}
$mysqli->close();
?>