我正在编写一个php脚本,它将使用ssh登录服务器,获取最新的30行ina文件并将数据插入表中:
system.out文件看起来像这样,由空格分隔:
2014-05-21-16.30.20 20
2014-05-21-16.31.20 10
2014-05-21-16.32.20 30
2014-05-21-16.33.20 50
2014-05-21-16.34.20 10
2014-05-21-16.35.20 50
2014-05-21-16.36.20 60
这是我的剧本。我的表中有三个字段:DATE,SERVER,IO。我从服务器数组中获取上述文件和SERVER输出中的DATE和IO:
<?php
chdir('c:/php');
include('Net/SSH2.php');
$servers=array('ServerA','ServerB);
foreach ($servers as &$value1) {
$server=$value1.".example.net";
##echo "$server\n";
$ssh = new Net_SSH2($server);
if (!$ssh->login('user', 'passwd')) {
continue;
##exit('Login Failed');
}
$file_name="/system.out";
$line= $ssh->exec("tail -30 file_name");
$rawLines = explode("\n", $line);
$lines = array();
foreach($rawLines as $rawLine){
$rawLine = trim($rawLine);
$parts = explode(" ", $rawLine);
$lines[] = $parts;
$conn=odbc_connect('odbc_id','user','passd');
if (!$conn)
{exit("Connection Failed: " . $conn);}
foreach ($lines as $value) {
$value[0] = '\''.$value[0] .'\'';
$value[0]='to_date('.$value[0].','.'\'YYYY-MM-DD-HH24.MI.SS\')';
$new_value = array();
$new_value[0]=$value[0];
$new_value[1]="'".$value1."'";
$new_value[2]=$value[1].')';
$sql="insert into DB_IO T (T.\"DATE\", T.SERVER, T.IO) VALUES (";
//print($sql."\n");
$my_array= implode(",", $new_value);
print($my_array."\n");
$sql = $sql.$my_array;
echo($sql."\n");
$prepare = odbc_prepare($conn, $sql);
$rs=odbc_execute($prepare);
}
}
}
odbc_close($conn);
exit;
?>
看起来这个脚本试图多次插入同一行。我需要尝试一次插入一行。任何想法,我在这里做错了什么?我在这里需要帮助。