如何使用PHP批量插入數據到MySQL數據庫

在許多場景下,我們需要將大量數據同時插入到MySQL數據庫中,這時候單獨插入每一條數據會非常耗時。因此,使用批量插入可以顯著地提高數據插入的效率。本文將介紹如何使用PHP實現批量插入數據到MySQL數據庫。

一、準備工作

在開始代碼編寫之前,我們需要進行幾個準備工作:

1、確保你已經安裝了PHP和MySQL,並且二者已經成功連接。

2、創建數據庫和數據表。以下是我們將要使用的示例表結構:

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL DEFAULT '',
  `password` varchar(50) NOT NULL DEFAULT '',
  `email` varchar(100) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

3、準備數據。這裡我們將使用一個包含100條記錄的CSV文件,每條記錄包括username、password和email三個字段:

username,password,email
user1,123456,user1@example.com
user2,123456,user2@example.com
user3,123456,user3@example.com
...(省略)
user98,123456,user98@example.com
user99,123456,user99@example.com
user100,123456,user100@example.com

二、逐行讀取CSV文件並批量插入數據

接下來,我們將使用PHP逐行讀取CSV文件中的數據,並批量插入到MySQL數據庫中。

1.連接MySQL數據庫

首先,我們需要連接到MySQL數據庫。這裡我們使用了PDO擴展,通過PDO對象連接到MySQL數據庫:

$dsn = 'mysql:host=localhost;dbname=test;charset=utf8mb4';
$user = 'root';
$password = '123456';

try {
    $pdo = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    die('Connection failed: ' . $e->getMessage());
}

2.打開CSV文件

接下來,我們需要打開CSV文件並逐行讀取其中的數據。這裡我們使用了fopen函數打開CSV文件,並使用fgetcsv函數逐行讀取其中的數據:

$file = 'test.csv';

if (($handle = fopen($file, 'r')) !== false) {
    while (($data = fgetcsv($handle)) !== false) {
        // TODO: 批量插入數據
    }
    fclose($handle);
} else {
    die('Cannot open file');
}

3.批量插入數據

接下來,我們需要將逐行讀取到的數據批量插入到MySQL數據庫中。這裡我們使用了PDO的預處理語句,通過bindParam方法綁定變量並循環執行execute方法實現批量插入:

$sql = 'INSERT INTO `user` (`username`, `password`, `email`, `created_at`) VALUES (:username, :password, :email, NOW())';

$stmt = $pdo->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->bindParam(':email', $email);

$count = 0;

foreach ($data as $row) {
    list($username, $password, $email) = $row;

    if ($stmt->execute()) {
        $count++;
    }
}

echo 'Total inserted: ' . $count;

完整代碼

以下是完整的示例代碼:

$dsn = 'mysql:host=localhost;dbname=test;charset=utf8mb4';
$user = 'root';
$password = '123456';

try {
    $pdo = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    die('Connection failed: ' . $e->getMessage());
}

$file = 'test.csv';

if (($handle = fopen($file, 'r')) !== false) {
    $sql = 'INSERT INTO `user` (`username`, `password`, `email`, `created_at`) VALUES (:username, :password, :email, NOW())';
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':username', $username);
    $stmt->bindParam(':password', $password);
    $stmt->bindParam(':email', $email);

    $count = 0;

    while (($data = fgetcsv($handle)) !== false) {
        list($username, $password, $email) = $data;

        if ($stmt->execute()) {
            $count++;
        }
    }

    fclose($handle);

    echo 'Total inserted: ' . $count;
} else {
    die('Cannot open file');
}

三、總結

本文介紹了如何使用PHP實現批量插入數據到MySQL數據庫。我們使用了PDO擴展連接到MySQL數據庫,並逐行讀取CSV文件中的數據,然後通過PDO的預處理語句實現批量插入。通過本文的學習,相信您已經掌握了如何高效地批量插入數據到MySQL數據庫。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/157688.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-18 20:01
下一篇 2024-11-18 20:01

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何使用Python獲取某一行

    您可能經常會遇到需要處理文本文件數據的情況,在這種情況下,我們需要從文本文件中獲取特定一行的數據並對其進行處理。Python提供了許多方法來讀取和處理文本文件中的數據,而在本文中,…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • 如何使用jumpserver調用遠程桌面

    本文將介紹如何使用jumpserver實現遠程桌面功能 一、安裝jumpserver 首先我們需要安裝並配置jumpserver。 $ wget -O /etc/yum.repos…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29

發表回復

登錄後才能評論