Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैं PHP में अलग-अलग सीएसवी पंक्तियों को अलग-अलग तालिकाओं में कैसे अपलोड कर सकता हूं?

आपके मामले में, सबसे अच्छा समाधान सबसे सरल है, इसलिए केवल पांच प्रश्न बनाकर, आप इसे लूप में भी कर सकते हैं:

$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);
}

या अद्यतन के लिए uid के साथ 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]);
}

या इससे भी बेहतर INSERT या UPDATE के साथ, ध्यान दें कि इस मामले में हम नामित पैरा का उपयोग कर रहे हैं।

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();
}

table1 . के लिए SQL .. 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

नोट: जब आप बेहतर तरीके से वर्णन करेंगे कि आप विशिष्टता को कैसे बनाए रखना चाहते हैं तो मैं शायद कुछ अन्य समाधान जोड़ूंगा। फिलहाल कोड नहीं जानता कि क्या सीएसवी के प्रमुख जेम्स वही जेम्स हैं, जो डीबी में प्रमुख हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डॉकर MySQL - स्प्रिंग बूट ऐप से MySQL डेटाबेस से कनेक्ट नहीं हो सकता है

  2. नोड जेएस अतुल्यकालिक डेटाबेस कॉल

  3. कॉलम में अनुमत अधिकतम लंबाई प्राप्त करें, mysql

  4. ORDER BY का उपयोग करते समय धीमी क्वेरी

  5. MySQL कनेक्टर्स और लाइसेंसिंग