php - 从db2中选择并插入mysql中不存在的地方

标签 php mysql sql db2

此脚本旨在连接到 db2 数据库和 mysql 数据库。 db2 数据库中有一个定期更新的表,此脚本旨在将它与 mysql 中的类似表进行检查,如果符合某些条件的记录在 db2 表中但不在 mysql 中,我将插入它。

就查询而言,我知道我希望它检查客户姓名和电话号码。因此,如果 db2 表中的记录具有相同的公司名称和电话号码,它会被忽略,但如果它是公司名称的不同号码或完全是全新的记录,我想插入它。我认为这需要通过“不存在”声明来完成。

我的另一个问题是我不确定比较表的最佳方式,因为它们在不同的连接上。我假设我会从我的 db2 表中选择,也许存储它,然后以某种方式使用存储的内容作为我的 INSERT 的基础。

有人可以帮助我设计这些查询/语句来克服这些障碍吗?

例子:

如果Mysql表有

    customerName | phone
    --------------------------
    cust123         1234567890

而且DB2有一个公司的二级号码

    customerName | phone
    --------------------------
    cust123         1234567890
    cust123         0987654321

然后我只想添加编号为 0987654321 的记录,因为第一个记录已经存在。全新的公司和电话号码也是如此。

    <?php

    //MySql Connection credentials
    $mysqlServer = "";
    $mysqlUser = "";
    $mysqlPass = "*";

    //Establilsh MySql Connection
    $mysqlConn = new mysqli($mysqlServer, $mysqlUser, $mysqlPass);

    //Check MySQL connection
    if($mysqlConn->connect_error){
      die("Connection Failed: " .$mysqlConn->connect_error);
    }
    echo "Connected Succssfully to Mysql";


    //DB2 Connection Credentials
    $DB2Server = "";
    $DB2User = "";
    $DB2Pass = "";

    //Establish DB2 connection
    $DB2Conn = odbc_connect("","", "");

    //Check DB2 Connection
    if(!$DB2Conn){
      die("Could not connect");
    }
    echo "Connected Succssfully to DB2";


    //First Query - Select * from db2

    /*select * from jacmfg.custmstf*/

    /*

            Insert Into 

            jfi.ambition_customer_data (companyNumber, customerName, phone, email)
            Select (db2 values) from db2 
            Where
                Not Exists (customerName(db2) = customerName(mysql), phone(db2) = phone(mysql))

    */



    ?>

最佳答案

与其将 db2 数据存储在 php 变量中,不如考虑将整个客户姓名和电话号码表复制到 MySQL 中以进行比较和更新。您可以通过 php 对数据进行混洗来做到这一点,但如果您将其从 db2 导出到 CSV 文件,然后使用 MySQL 的 load data local infile 命令从中导入数据,则速度可能会更快CSV 文件。

然后,假设你在MySQL中的客户数据表名为customer_table,而从db2导入的数据在名为staging的暂存表中,你可以插入新的从db2表记录到MySQL表如下:

insert into customer_table
    (customerName, phone)
select
    s.customerName,
    s.phone
from
    staging as s
    left join customer_table as c
        on c.customerName=s.customerName
        and c.phone=s.phone
where
    c.customerName is null;

关于php - 从db2中选择并插入mysql中不存在的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46100282/

相关文章:

php - 使用 session 显示/隐藏 div (php)

php sql插入没有结果

mysql - 返 repo 买日期在注册日期后 7 天内的所有结果

Mysql 查询获取最近 8 天的数据

sql替换两个字符串之间的所有字符

php - 如果记录为空,则将值连接到表中

php - 使用 phpDocumentor 记录 PHP 常量(定义)的正确方法是什么

mysql - 子查询在 SELECT 部分返回多于 1 行(Dlookup 到 MySql)

mysql - 需要一些帮助从查询中取回表,以便将来在我自己的数据库中使用

mysql - SQL 查询获取州、城市、地址和邮政编码