使用PHP将CSV导入MySQL

时间:2016-09-29 11:25:10

标签: php mysql csv

尝试使用PHP和CSV导入MySQL DB更新表。我需要一些帮助。

我有两个表:用户余额

  1. 用户
    ID | USER_LOGIN |
    1 | name1 |
    2 | name2 |

  2. 平衡
    USER_ID | user_balance |
    1 | 1000 |
    2 | 2000 |

  3. 查询操作:

    SELECT users.user_login, balance.user_balance
    FROM  `users` ,  `balance` 
    WHERE  `ID` =  `user_id`
    

    CSV文件具有以下结构:

    NAME1; 3000
    NAME2; 5000

    但我不知道如何使用ID和user_id格式CSV更新两个连接的表。

    我很乐意提供任何帮助和建议。谢谢!

2 个答案:

答案 0 :(得分:4)

首先从CSV文件中获取数据。

public void runThread(MyThreadImpl myThreadImpl) {
    synchronized (this) {
        this.myThreadImpl = myThreadImpl;
        notify();
    }
}

synchronized public void run() {
    while (true)
        try {
            wait();
            Global.myReentrantLock.lock();
            try {
                try {
                    myThreadImpl.call();
                } catch (FileException e) {
                    // trace e
                } catch (RuntimeException e) {
                    // trace e
                } catch (Exception e) {
                    // trace e
                }
            } finally {
                Global.myReentrantLock.unlock();
            }
        } catch (InterruptedException e) {
          // trace e
        } catch (Exception e) {
          // trace e
        }
}

然后更新查询。

$row = 1;
if (($handle = fopen("data.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}

答案 1 :(得分:1)

您可以尝试此Update声明:

UPDATE balance b 
JOIN users u ON u.ID = b.user_id
SET b.user_balance = '@balance'
WHERE u.user_login = '@name' 

@balance@nameCSV的值。