Import Excel vào cơ sở dữ liệu MySql bằng PHP

Import dữ liệu vào cơ sở dữ liệu (ví dụ import vào MySql) từ một tệp Excel hoặc các nguồn dữ liệu khác có thể có một số mục đích khác nhau, bao gồm:

  1. Dự liệu và phân tích: Dữ liệu thường được sử dụng để phân tích và trích xuất thông tin quan trọng từ dữ liệu đó. Bằng cách import dữ liệu vào cơ sở dữ liệu, bạn có thể tiện lợi truy cập và sử dụng dữ liệu đó cho các mục đích phân tích, thống kê, và báo cáo.
  2. Tích hợp dữ liệu: Import dữ liệu từ nhiều nguồn khác nhau vào một cơ sở dữ liệu có thể giúp tổ chức và tích hợp dữ liệu một cách hiệu quả hơn. Điều này giúp tạo ra một nguồn dữ liệu đồng nhất và dễ quản lý hơn.
  3. Tự động hóa quy trình: Import dữ liệu vào cơ sở dữ liệu cũng có thể được sử dụng để tự động hóa các quy trình, ví dụ như cập nhật thông tin khách hàng, sản phẩm hoặc dịch vụ từ các nguồn dữ liệu bên ngoài một cách định kỳ hoặc theo yêu cầu.
  4. Dữ liệu cho ứng dụng web: Import dữ liệu vào cơ sở dữ liệu là một phần quan trọng trong việc xây dựng các ứng dụng web, nơi dữ liệu được sử dụng để hiển thị thông tin cho người dùng hoặc thực hiện các chức năng cụ thể của ứng dụng.

Giả sử ta có bảng cơ sở dữ liệu mẫu sau:

Tạo thêm bảng Person trong cơ sở dữ liệu test

database-import

Tạo bảng này trong SQL như sau:

CREATE TABLE Person (
person_id INT AUTO_INCREMENT PRIMARY KEY,
ho_ten VARCHAR(255),
ngay_sinh DATE,
que_quan VARCHAR(255),
so_dien_thoai VARCHAR(20),
dia_chi VARCHAR(255)
);

Sau khi tạo xong bảng thì ta có thể tiến hành import dữ liệu. Dữ liệu có thể được import trực tiếp từ file excel vào bảng trong database hoặc chúng ta có thể dùng code php để chọn file excel để import vào database.

Import trực tiếp từ file excel vào database

Để import trực tiếp từ file excel vào database, bạn có thể làm như sau:

  1. Chuẩn bị file dữ liệu excel bao gồm đầy đủ các cột thông tin như trong bảng Person ở trên.
  2. Sau khi chuẩn bị đủ dữ liệu theo đúng trình tự bạn lưu file excel dưới dạng CSV (Vào Menu File/ chọn Save As/ mục Save As Type chọn CSV coma delimited)
  3. Và thực hiện câu lệnh truy vấn sau để thực hiện import:
LOAD DATA INFILE 'C:/xampp/htdocs/test/imptest.csv'
INTO TABLE person
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS;

Giải thích:

  • LOAD DATA INFILE 'C:/xampp/htdocs/test/imptest.csv': Lệnh này chỉ định tệp CSV (imptest.csv) cần được load vào cơ sở dữ liệu từ đường dẫn cụ thể.
  • INTO TABLE person: Dữ liệu được load sẽ được chèn vào bảng “person” trong cơ sở dữ liệu.
  • FIELDS TERMINATED BY ',' ENCLOSED BY '"': Xác định cách tách các trường trong file CSV. Trong trường hợp này, các trường được phân tách bởi dấu phẩy (,), và mỗi giá trị được bao quanh bởi dấu nháy kép (").
  • LINES TERMINATED BY '\r\n': Xác định cách tách các dòng trong file CSV. Trong trường hợp này, dòng mới được định dạng bởi ký tự xuong dòng (\r\n).
  • IGNORE 1 ROWS: Điều này cho phép bỏ qua một số dòng ở đầu tệp CSV. Trong trường hợp này, một dòng tiêu đề (header) được bỏ qua.

Với cách import này thì bạn cần có quyền truy cập hệ thống mới có thể sử dụng được. Nếu là người sử dụng thông thường muốn import thì sẽ không khả thi.

Import bằng code cho phép chọn file import vào trang web với PHP

Để import bằng code php vào database bạn cần thư viện hỗ trợ import như PHPExcel hoặc PhpSpreadsheet. Trong bài viết này hướng dẫn bạn sử dụng PHPExel.

Giới thiệu về PHPExcel

PHPExcel là một thư viện mã nguồn mở cho PHP được sử dụng để xử lý và tạo các tệp Excel. Nó cho phép bạn đọc, ghi và tạo các tệp Excel một cách dễ dàng từ mã PHP của bạn. Dưới đây là một số tính năng chính của PHPExcel:

  1. Tạo và Chỉnh sửa Tệp Excel: PHPExcel cho phép bạn tạo mới, chỉnh sửa và lưu các tệp Excel từ mã PHP của bạn. Bạn có thể tạo bảng tính mới, thêm dữ liệu, định dạng ô, và thậm chí tạo biểu đồ.
  2. Đọc Dữ liệu từ Tệp Excel: Bạn có thể sử dụng PHPExcel để đọc dữ liệu từ các tệp Excel đã tồn tại. Điều này cho phép bạn xử lý dữ liệu từ các báo cáo hoặc tệp dữ liệu được tạo ra từ các ứng dụng khác.
  3. Hỗ trợ Nhiều Định dạng Tệp Excel: PHPExcel hỗ trợ nhiều định dạng tệp Excel như .xls, .xlsx và .csv, cho phép bạn làm việc với các tệp được tạo ra từ các phiên bản khác nhau của Microsoft Excel.
  4. Đa Dạng Chức năng Định dạng: PHPExcel cung cấp một loạt các chức năng để định dạng ô, bảng tính và dữ liệu. Bạn có thể thiết lập các thuộc tính như font, kích thước, màu sắc và căn chỉnh để tạo ra các bảng tính chuyên nghiệp.
  5. Hỗ trợ Biểu đồ và Hình ảnh: Bạn có thể tạo và chèn biểu đồ và hình ảnh vào các tệp Excel bằng PHPExcel. Điều này cho phép bạn hiển thị dữ liệu một cách trực quan và hấp dẫn trong các báo cáo và tài liệu.

Tải PHPExcel tại đây

Thư viện này hỗ trợ cho code PHP phiên bản 7.4 trở lên: https://github.com/hako-975/PHPExcel-v7.4

Code import Excel vào Database có thể như sau:

<?php
// Kiểm tra xem nút "submit" đã được nhấn chưa
if(isset($_POST['submit'])){
// Lấy đường dẫn tạm thời của file Excel được chọn từ form
$excelFile = $_FILES['excelFile']['tmp_name'];
// Kiểm tra xem có file Excel được chọn không
if(empty($excelFile)){
   echo "Vui lòng chọn file Excel để import.";
} else {
// Đã có file Excel được chọn, tiến hành xử lý
// Include thư viện PHPExcel
require 'PHPExcel/PHPExcel.php';
// Tải file Excel vào một đối tượng PHPExcel
$objPHPExcel = PHPExcel_IOFactory::load($excelFile);
// Lấy sheet đầu tiên từ file Excel
$sheet = $objPHPExcel->getSheet(0);
// Lấy số dòng cuối cùng có dữ liệu trên sheet
$lastRow = $sheet->getHighestRow();
// Kết nối đến cơ sở dữ liệu MySQL
$mysqli = new mysqli("localhost", "root", "", "test");
// Kiểm tra kết nối
if ($mysqli->connect_error) {
   die("Kết nối tới cơ sở dữ liệu thất bại: " . $mysqli->connect_error);
}
// Biến để đếm số dòng được thêm vào cơ sở dữ liệu
$rowCount = 0;
// Duyệt qua từng dòng trên sheet để lấy dữ liệu và thêm vào cơ sở dữ liệu
for ($row = 2; $row <= $lastRow; $row++) {
// Lấy dữ liệu từ các cột A, B, C, D, E trên từng dòng
   $hoTen = $sheet->getCell('A' . $row)->getValue();
   $ngaySinh = $sheet->getCell('B' . $row)->getValue();
   $queQuan = $sheet->getCell('C' . $row)->getValue();
   $soDienThoai = $sheet->getCell('D' . $row)->getValue();
   $diaChi = $sheet->getCell('E' . $row)->getValue();
// Tạo câu truy vấn SQL để chèn dữ liệu vào cơ sở dữ liệu
$query = "INSERT INTO person (ho_ten, ngay_sinh, que_quan, so_dien_thoai, dia_chi) VALUES ('$hoTen', '$ngaySinh', '$queQuan', '$soDienThoai', '$diaChi')";
// Thực thi câu truy vấn SQL
$result = $mysqli->query($query);
if ($result) {
// Nếu thêm dữ liệu thành công, tăng biến đếm rowCount lên
   $rowCount++;
} else {
// Nếu có lỗi khi thêm dữ liệu, in ra thông báo lỗi
   echo "Lỗi khi thêm dòng thứ $row vào cơ sở dữ liệu: " . $mysqli->error;
}
}
// Đóng kết nối cơ sở dữ liệu
   $mysqli->close();
// Hiển thị thông báo thành công về số dòng được thêm vào cơ sở dữ liệu
echo "Đã import thành công $rowCount dòng vào cơ sở dữ liệu.";
}
}
?>
<html>
<head>
<title>Import Excel</title>
</head>
<body>
<!-- Form để chọn file Excel và submit -->
<form action="" method="post" enctype="multipart/form-data">
Chọn file Excel để import:
   <input type="file" name="excelFile" id="excelFile">
   <input type="submit" value="Import" name="submit">
</form>
</body>
</html>

File Excel mẫu của bạn có thể như sau:

excel-to-database

Tóm lại, mục đích chính của việc import dữ liệu vào cơ sở dữ liệu là để lưu trữ và quản lý dữ liệu một cách có tổ chức, từ đó giúp cho việc sử dụng và xử lý dữ liệu trở nên dễ dàng và hiệu quả hơn.