CodeGym /Các khóa học /SQL SELF /Giới thiệu về việc nạp dữ liệu hàng loạt

Giới thiệu về việc nạp dữ liệu hàng loạt

SQL SELF
Mức độ, Bài học
Có sẵn

Hãy tưởng tượng bạn vừa nhận được một file CSV chứa thông tin về sinh viên, ví dụ như từ một database khác hoặc một app bên ngoài. Ngồi copy từng dòng một bằng tay á? Thôi, cảm ơn nhé. Đây chính là lúc việc nạp dữ liệu hàng loạt phát huy tác dụng.

Dưới đây là vài tình huống mà nạp dữ liệu hàng loạt sẽ cứu cánh cho bạn:

  • Di chuyển dữ liệu: cần chuyển dữ liệu từ hệ thống này sang hệ thống khác. Ví dụ, từ Excel hoặc một database khác sang PostgreSQL.
  • Khởi tạo database: điền dữ liệu khởi đầu cho database của bạn, ví dụ như danh sách thành phố, khóa học hoặc các loại sản phẩm.
  • Tích hợp với hệ thống bên ngoài: thường xuyên thêm dữ liệu mới, ví dụ như cập nhật dữ liệu từ bên thứ ba qua file.
  • Cập nhật lượng lớn dữ liệu: cần thay thế dữ liệu cũ bằng dữ liệu mới.

Đến đây ổn chưa? Nếu rồi thì mình tiếp tục nhé!

Các cách tiếp cận chính để nạp dữ liệu hàng loạt

Trước khi đi sâu vào chi tiết, tụi mình cùng điểm qua các cách để thêm nhiều dòng vào database thay vì từng dòng một. Mình sẽ nói về cách dùng SQL query, rồi sau đó là cách tiện hơn và hiện đại hơn — nạp dữ liệu từ file.

SQL query để chèn dữ liệu

Bạn chắc cũng biết rồi, để thêm dữ liệu thì dùng lệnh INSERT INTO. Cách này ổn nếu chỉ có vài dòng thôi. Ví dụ:

INSERT INTO students (id, name, age, course)
VALUES (1, 'Otto Lin', 20, 'Lập trình');

Nhưng nếu bạn phải xử lý hàng chục, hàng trăm hay hàng ngàn dòng thì cách này không hiệu quả lắm đâu. Tất nhiên, có thể tự động hóa bằng code, nhưng mà làm tay thì cực kỳ mệt và dễ sai sót.

Nạp từ file

Vì vậy, người ta thường dùng cách nạp dữ liệu từ file, như file CSV (Comma-Separated Values). Đây là định dạng text đơn giản, mỗi dòng là một bản ghi, các giá trị cách nhau bằng dấu phẩy hoặc dấu chấm phẩy.

Ví dụ nội dung file CSV:

id,name,age,course
1,Otto Lin,20,Lập trình
2,Maria Chi,21,Thiết kế
3,Alex Ming,19,Toán học

Định dạng này vừa dễ đọc với con người, vừa dễ cho chương trình xử lý. CSV có thể mở bằng Excel, xử lý bằng Python hoặc ngôn ngữ khác, và import vào database rất dễ. Nạp dữ liệu hàng loạt từ file nhanh hơn nhiều so với nhập tay và giảm nguy cơ nhập sai.

Chuẩn bị cho việc nạp dữ liệu hàng loạt

Bí quyết thành công là chuẩn bị kỹ. Mình sẽ chuẩn bị database để nhận dữ liệu, kiểm tra cấu trúc và dữ liệu cho chuẩn.

Kiểm tra cấu trúc bảng

Trước hết, hãy chắc là database của bạn có bảng phù hợp với cấu trúc file. Ví dụ, nếu bạn nạp dữ liệu sinh viên thì phải có bảng với các cột tương ứng.

Ví dụ bảng để nạp dữ liệu sinh viên:

CREATE TABLE students (
    id SERIAL PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER NOT NULL,
    course TEXT
);

Lưu ý quan trọng:

  • Hãy chắc kiểu dữ liệu của các cột giống với dữ liệu trong file. Nếu age là số thì trong CSV cũng phải toàn số ở cột đó.
  • Các cột có ràng buộc (NOT NULL, UNIQUE) thì càng phải chuẩn bị dữ liệu cẩn thận.

Kiểm tra dữ liệu

Giờ nói nhanh về dữ liệu. Đây là những gì bạn nên kiểm tra trước khi nạp:

  1. Không có dòng trống hoặc giá trị sai. Ví dụ, dòng: 12,,20,Lập trình sẽ lỗi vì name là trường bắt buộc.
  1. Đúng dấu phân cách. Nếu CSV của bạn dùng dấu phẩy (,), hãy chắc là cấu hình đúng. Nếu dùng dấu chấm phẩy (;) thì phải chỉ rõ khi nạp dữ liệu.

  2. Encoding. PostgreSQL mong đợi file ở dạng UTF-8. Nếu file của bạn ở encoding khác (ví dụ Windows-1251), cần convert lại.

Chút joke cho coder giải trí

Tại sao coder lại thích dùng CSV? Vì sau hàng giờ vật lộn với JSON, cuối cùng họ cũng thấy "dữ liệu đơn giản"... cho đến khi gặp dấu phẩy trong text.

Ứng dụng thực tế của việc nạp dữ liệu hàng loạt

Trong dự án thực tế, nạp dữ liệu hàng loạt được dùng rất nhiều. Ví dụ:

  • Khi cập nhật danh mục sản phẩm cho shop online. File CSV chứa hàng ngàn sản phẩm có thể nạp chỉ trong vài giây.
  • Khi di chuyển khách hàng từ CRM này sang CRM khác. Tất cả dữ liệu khách, địa chỉ, đơn hàng được nạp từ CSV vào PostgreSQL.
  • Trong phân tích dữ liệu, khi cần nạp dữ liệu bán hàng của cả tháng để phân tích.

Giờ bạn đã hiểu tại sao cần làm việc này và chuẩn bị ra sao, tụi mình sẽ tiếp tục với các công cụ cụ thể để nạp dữ liệu, như lệnh COPY. Nhưng cái này để bài sau nhé.

2
Nhiệm vụ
SQL SELF, mức độ, bài học
Đã khóa
Nhập dữ liệu thủ công bằng cách sử dụng INSERT INTO
Nhập dữ liệu thủ công bằng cách sử dụng INSERT INTO
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION