5 простых способов импортировать данные CSV в базу данных с помощью PHP

Импорт данных из файла CSV в базу данных — распространенная задача в веб-разработке. Это позволяет вам эффективно наполнять вашу базу данных большими объемами данных. В этой статье мы рассмотрим пять простых способов импорта данных CSV в базу данных с помощью PHP. Мы предоставим разговорные объяснения и примеры кода, которые помогут вам освоить каждый метод.

Метод 1: использование встроенных функций PHP
PHP предоставляет встроенные функции, такие как fgetcsv()и mysqli, для обработки анализа CSV-файлов и операций с базой данных. Вот простой пример:

$file = fopen('data.csv', 'r');
$conn = mysqli_connect('localhost', 'username', 'password', 'database');
while (($data = fgetcsv($file)) !== false) {
    $name = $data[0];
    $email = $data[1];
    // Process and insert data into the database
    $sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
    mysqli_query($conn, $sql);
}
fclose($file);
mysqli_close($conn);

Метод 2: использование библиотек PHP
Существует несколько библиотек PHP, которые упрощают анализ CSV и взаимодействие с базой данных, например League\Csvили PhpSpreadsheet. Эти библиотеки предоставляют более продвинутые функции, такие как проверка данных и обработка различных форматов CSV. Вот пример использования библиотеки League\Csv:

use League\Csv\Reader;
$csv = Reader::createFromPath('data.csv');
$csv->setHeaderOffset(0);
$conn = mysqli_connect('localhost', 'username', 'password', 'database');
foreach ($csv as $record) {
    $name = $record['name'];
    $email = $record['email'];
    // Process and insert data into the database
    $sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
    mysqli_query($conn, $sql);
}
mysqli_close($conn);

Метод 3: использование инструментов, специфичных для баз данных.
В некоторых базах данных есть инструменты или утилиты, которые позволяют прямой импорт CSV. Например, в MySQL есть оператор LOAD DATA INFILE. Вы можете выполнить этот оператор с помощью PHP для импорта данных CSV в базу данных. Вот пример:

$conn = mysqli_connect('localhost', 'username', 'password', 'database');
$csvFile = 'data.csv';
$sql = "LOAD DATA INFILE '$csvFile' INTO TABLE users
        FIELDS TERMINATED BY ',' 
        ENCLOSED BY '\"'
        LINES TERMINATED BY '\n'
        IGNORE 1 ROWS";
mysqli_query($conn, $sql);
mysqli_close($conn);

Метод 4: использование библиотек ORM (объектно-реляционного сопоставления).
Если вы используете библиотеку ORM, такую ​​как Eloquent или Doctrine, вы можете использовать их функции для импорта данных CSV в базу данных. Эти библиотеки предоставляют абстракции высокого уровня и поддержку массовых вставок. Вот пример использования Eloquent:

use App\Models\User;
use Illuminate\Database\Capsule\Manager as DB;
$csvFile = 'data.csv';
$csvData = array_map('str_getcsv', file($csvFile));
$headers = array_shift($csvData);
DB::table('users')->insert($csvData);

Метод 5: ручное преобразование данных и генерация SQL
Если вы предпочитаете более индивидуальный подход, вы можете вручную преобразовать данные CSV и сгенерировать операторы вставки SQL. Это позволяет вам выполнять проверку данных или применять собственную бизнес-логику. Вот пример:

$file = fopen('data.csv', 'r');
$conn = mysqli_connect('localhost', 'username', 'password', 'database');
while (($data = fgetcsv($file)) !== false) {
    $name = mysqli_real_escape_string($conn, $data[0]);
    $email = mysqli_real_escape_string($conn, $data[1]);
    // Perform data validation or transformation
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
        mysqli_query($conn, $sql);
    }
}
fclose($file);
mysqli_close($conn);

Импорт данных CSV в базу данных с помощью PHP — простой процесс. В этой статье мы рассмотрели пять различных методов выполнения этой задачи. Предпочитаете ли вы использовать встроенные функции PHP, библиотеки, инструменты для баз данных, библиотеки ORM или ручное преобразование данных, есть решение, которое соответствует вашим потребностям. Не стесняйтесь выбирать метод, соответствующий требованиям вашего проекта, и начинайте эффективно импортировать данные.