1

我有 2 个数据库:

DB1

客户(列:customernr、名称、地址、db2clientid)

发票(列:invoicenr、customernr、totalamount、taxamount、createdate)

DB2

tblinvoices(列:invoiceid、contactid、total、tax、date)

我想tblinvoices使用 cronjob 将发票从 DB2 导入 DB1 中的发票。我只想从db1/customers/db2clientid = db2/tblinvoices/contactid.

我想通过脚本(通过 MySQL)运行它,所以我可以创建一个每小时运行的 cronjob。

我最关心的是如何只导入新记录。如何管理不是每个 cron 运行都导入完整的表,而只导入尚未在 DB1 中的记录?

我可以编写简单的 SQL 命令,但是我完全不知道从哪里开始寻找。

有人可以指出正确的方向吗?使用哪些论据?

4

1 回答 1

1

如果您对两个数据库都具有相同user credentialssimilar previledges内容,则可以按照以下步骤操作。

运行 query1 以仔细检查它是否选择了需要进入 db1 的正确记录。一旦确认使用下面的 query2 插入这些记录。

查询#1

SELECT i.* 
        FROM db2.tblinvoices i 
        LEFT JOIN db1.invoices db1inv on db1inv.invoicenr=i.invoiceid 
        AND db1inv.contactid=i.customernr 
        WHERE db1.invoicenr IS NULL

查询#2

 INSERT INTO db1.invoices (
    SELECT i.* 
    FROM db2.tblinvoices i 
    LEFT JOIN db1.invoices db1inv on db1inv.invoicenr=i.invoiceid 
    AND db1inv.contactid=i.customernr 
    WHERE db1.invoicenr IS NULL)
于 2013-06-18T13:46:11.940 回答