Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để tải các hàng CSV riêng lẻ lên các bảng khác nhau trong PHP?

Trong trường hợp của bạn, giải pháp tốt nhất là giải pháp đơn giản nhất, vì vậy chỉ cần tạo năm truy vấn, bạn thậm chí có thể thực hiện nó trong vòng lặp:

$pdo = new PDO("mysql:host=127.0.0.1;dbname=yourdbname;charset=utf8", "username", "password");

if (($handle = fopen("test.csv", "r")) !== FALSE) {
    $row = 1;
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if ($row == 1) {
            $row++;
            continue;
        }
        $row++;

        foreach (['table1', 'table2', 'table3', 'table4', 'table5'] as $table) {
            $stmt = $pdo->prepare("INSERT INTO $table (name, title) VALUES (?,?)");
            $stmt->execute([$data[0], $data[1]]);
        }
    }
    fclose($handle);
}

Hoặc để UPDATE bằng uid, hãy thay thế forech:

foreach (['table1', 'table2', 'table3', 'table4', 'table5'] as $table) {
    $stmt = $pdo->prepare("UPDATE $table SET name=?, title=? WHERE uid=?");
    $stmt->execute([$data[0], $data[1], $uid]);
}

Hoặc thậm chí tốt hơn với CHÈN hoặc CẬP NHẬT, lưu ý rằng trong trường hợp này, chúng tôi đang sử dụng các tham số được đặt tên.

foreach (['table1', 'table2', 'table3', 'table4', 'table5'] as $table) {
    $stmt = $pdo->prepare("INSERT INTO $table (uid, name, title) 
        VALUES (:uid, :name, :title) 
        ON DUPLICATE KEY UPDATE name=:name, title=:title");
    $stmt->bindValue('uid', $uid);
    $stmt->bindValue('name', $data[0]);
    $stmt->bindValue('title', $data[1]);
    $stmt->execute();
}

SQL cho table1 .. table5

CREATE TABLE table1 (
 uid int(11) NOT NULL AUTO_INCREMENT,
 name varchar(255) NOT NULL,
 title varchar(255) NOT NULL,
 PRIMARY KEY (uid)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8

Lưu ý: Khi bạn mô tả tốt hơn bạn muốn duy trì tính độc đáo như thế nào, tôi có thể sẽ thêm một số giải pháp khác. Hiện tại, mã không biết James, giám đốc CSV có giống James, trưởng DB hay không.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách bật bộ đệm truy vấn MySQL

  2. Quyền để tạo trình kích hoạt trong mysql

  3. Cách sử dụng MySQL Rollup

  4. Lỗi khi tải Mô-đun MySQLdb 'Bạn đã cài đặt mysqlclient hay MySQL-python?'

  5. Tìm kiếm MySQL từ chính xác với $ trong từ