我创建了一个 php 文件,它将数据从一个数据库服务器复制到另一个数据库服务器。
我的 php 文件:
<?php
require_once 'config.php'; //just a php file for database connection
try{
$pdo = new PDO('mysql:host=localhost;dbname=sampledb;', 'username', 'password' );
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare(
"SELECT
contro_number,name,date_save,date_received
FROM
ETable
WHERE
date_save IS NOT NULL AND date_received >= '2020-01-03'
"
);
$stmt->execute();
while( $row = $stmt->fetch(PDO::FETCH_ASSOC)) {
insert_mysql($row["control_number"],$row["name"],$row["date_save"],$row["date_received"]);
}
}catch(PDOException $e){
var_dump($e->getMessage());
}
$pdo = null;
function insert_mysql($control_number,$name,$date_save,$date_received)
{
try{
$pdo = new PDO('mysql:host=localhost:3306;dbname=secondDB;', '', '' );
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare(
"INSERT INTO `MyTable`
(`control_number`,`name`,`date_save`,`date_received`)
VALUES
(:control_number,:name,:date_save,:date_received)
"
);
$stmt->bindValue( ':control_number', $control_number, PDO::PARAM_STR );
$stmt->bindValue( ':name', $name, PDO::PARAM_STR );
$stmt->bindValue( ':date_save', $date_save, PDO::PARAM_STR );
$stmt->bindValue( ':date_received', $date_received, PDO::PARAM_STR );
$flag = $stmt->execute();
if( !$flag ) {
$info = $stmt->errorInfo();
exit($info[2]);
}
}catch(PDOException $e){
var_dump($e->getMessage());
}
$pdo = null;
}
?>
现在,我打算使用 .bat 文件让这个 php 文件每 10 分钟运行一次,以便自动插入数据。
但是,如果此文件将重复运行,则只会复制数据。
我必须执行什么查询或条件来首先过滤数据并检查它是否已经存在,如果不存在则插入数据?这样每次一个数据库中有新数据时,它都会自动复制或插入另一个数据库......