Bảng dữ liệu CSV (.csv)
RFC Tiêu chuẩnComma-Separated Values (CSV) là định dạng văn bản thuần túy phổ biến rộng khắp cho dữ liệu dạng bảng; mỗi dòng biểu thị một bản ghi và các trường được phân tách bằng ký tự phân cách.
Chuyển đổi XLSX sang CSV
Trình chuyển đổi từ XLSX sang CSV miễn phí trên trình duyệt. Chuyển đổi tệp ngay lập tức trên thiết bị của bạn.
Nén CSV trực tuyến
Riêng tư - tệp không bao giờ rời khỏi thiết bị của bạn
Kiểm tra & Siêu dữ liệu
Các hệ điều hành và trình phân tích tệp nhận dạng tệp CSV bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:
Chữ ký ở đầu tệp (mẫu byte nhận diện)
Các hệ điều hành và trình phân tích tệp nhận dạng tệp CSV bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:
CHỮ KÝ HEX (OFFSET 0):
Không có chữ ký cố địnhBIỂU DIỄN ASCII: Byte văn bản; kiểu mã hóa có thể khác nhau (thường là UTF-8)
Tiêu chuẩn hóa: RFC 4180 / IETF
Thông số kỹ thuật
| Kiến trúc Container | Tệp văn bản phẳng phân tách biểu diễn các hàng và cột dữ liệu bảng |
| Nén | Gzip / Deflate đạt hiệu suất nén 85%-95% đối với các bản ghi dạng bảng lặp lại |
| Thứ tự byte | Luồng văn bản UTF-8 (có thể có BOM UTF-8 EF BB BF, được Excel sử dụng) |
| Không gian màu | Không áp dụng |
| Kênh & Cấu trúc | Bản ghi hàng được phân tách bằng CRLF với các cột phân tách bằng dấu phẩy |
| Kích thước tối đa | Không giới hạn; có thể truyền phát dung lượng gigabyte mà không cần tải toàn bộ tệp vào bộ nhớ |
| Độ trong suốt | Không áp dụng |
| Truyền phát & Tăng dần | Hỗ trợ xử lý luồng từng dòng nguyên bản bởi tất cả các đường ống dữ liệu |
Ma trận so sánh kỹ thuật: CSV so với các đối thủ
| Thuộc tính kỹ thuật | CSV (Hiện tại) | Excel (XLSX) | Parquet | JSON |
|---|---|---|---|---|
| Loại tệp | Bảng phẳng văn bản thuần túy | Bảng tính XML nén zip | Lưu trữ dạng cột nhị phân | Văn bản phân cấp |
| Nhiều trang tính | Không (chỉ một bảng phẳng duy nhất) | Có (nhiều sổ làm việc và trang tính) | Lưu trữ dựa trên phân vùng | Mảng và đối tượng lồng nhau |
| Kiểu dữ liệu | Văn bản thô không có kiểu | Ô có kiểu, công thức, định dạng | Kiểu cột nhị phân nghiêm ngặt | Kiểu nguyên thủy (chuỗi, số, boolean) |
| Phân tích dữ liệu lớn | Chậm (yêu cầu đọc từng hàng một cách tuyến tính) | Không phù hợp cho dữ liệu lớn | Cực nhanh (cắt tỉa cột & đẩy xuống vị từ) | Trung bình |
Các dạng hỏng thường gặp và hướng dẫn khôi phục bằng mã hex
Các cột dịch chuyển sang phải hoặc số lượng hàng không khớp.
Nguyên nhân gốc rễ: Một trường văn bản chứa dấu phẩy không được thoát ký tự mà không có dấu ngoặc kép bao quanh.
Khắc phục: Theo RFC 4180, các trường có chứa dấu phẩy phải được đặt trong dấu ngoặc kép: "Smith, John".
Các ký tự có dấu hiển thị thành các ký tự lạ (lỗi hiển thị như é thay vì é) trong Excel.
Nguyên nhân gốc rễ: Excel đã mở tệp CSV UTF-8 với giả định là bảng mã ký tự Windows ANSI/CP1252 cũ.
Khắc phục: Thêm 3 byte Ký hiệu thứ tự byte UTF-8 (0xEF 0xBB 0xBF) vào đầu tệp.
Phân tích bảo mật và các đường tấn công nhằm vào bộ phân tích cú pháp
Tệp CSV mở trực tiếp trong các phần mềm bảng tính như Excel và Google Sheets, khiến người dùng có nguy cơ bị tấn công chèn công thức qua CSV.
Các véc-tơ tấn công đã biết
- Tấn công chèn công thức: ô bắt đầu bằng '=', '+', '-', hoặc '@' có thể thực thi macro trong bảng tính hoặc lệnh DDE (ví dụ: '=cmd|' /C calc'!A0').
- Trích xuất dữ liệu qua công thức HYPERLINK() gửi dữ liệu ô nhạy cảm đến máy chủ của kẻ tấn công từ xa khi người dùng nhấp vào.
Biện pháp phòng thủ tốt nhất: Khi xuất dữ liệu người dùng sang CSV, hãy thêm dấu nháy đơn (') hoặc tab vào trước bất kỳ ô nào bắt đầu bằng '=', '+', '-', hoặc '@' để buộc hiển thị dưới dạng văn bản thuần túy trong Excel.
Nguồn gốc lịch sử và các cột mốc
Ưu điểm & Lợi ích chính
- Độ đơn giản tối đa: đọc được trong bất kỳ trình soạn thảo văn bản nào và có thể nhập vào mọi cơ sở dữ liệu cũng như bảng tính.
- Truyền phát từng dòng cực kỳ nhanh mà không cần tạo DOM đầy đủ trong bộ nhớ.
- Chi phí vận hành tối thiểu: không có cú pháp thẻ dài dòng hoặc định nghĩa lược đồ.
Hạn chế & Nhược điểm kỹ thuật
- Không có kiểu dữ liệu tiêu chuẩn: số, ngày tháng, giá trị boolean và văn bản đều được lưu trữ dưới dạng chuỗi thô.
- Không hỗ trợ nhiều trang tính, định dạng ô, công thức hoặc siêu dữ liệu.
- Xung đột ký tự phân cách (dấu phẩy bên trong văn bản, dấu phẩy thập phân ở các vùng châu Âu) thường gây ra lỗi phân tích cú pháp.
Thông tin kỹ thuật thú vị
- Ở nhiều quốc gia châu Âu nơi dấu phẩy được dùng làm dấu thập phân, dấu chấm phẩy (;) được dùng thay cho dấu phẩy làm dấu phân tách CSV.
- Microsoft Excel trước đây yêu cầu UTF-8 BOM (0xEF 0xBB 0xBF) để hiển thị chính xác các ký tự có dấu không phải ASCII.
- Dịch vụ Y tế Quốc gia Vương quốc Anh (NHS) từng nổi tiếng vì làm mất gần 16.000 bản ghi theo dõi liên hệ COVID-19 vào năm 2020 do dữ liệu được nhập vào một định dạng bảng tính Excel cũ giới hạn số hàng ở mức 65.536.
Các câu hỏi kỹ thuật thường gặp
RFC 4180 là gì?
RFC 4180 là tiêu chuẩn IETF chính thức dành cho CSV. Tiêu chuẩn này quy định rằng các trường chứa dấu phẩy, ngắt dòng hoặc dấu ngoặc kép phải được đặt trong dấu ngoặc kép, và các dấu ngoặc kép bên trong phải được thoát bằng cách nhân đôi chúng ("").
Tại sao các tệp CSV lại mở ra với các ký tự bị lỗi trong Excel?
Các phiên bản Microsoft Excel cũ hơn mặc định sử dụng trang mã cục bộ của Windows (như Windows-1252) thay vì UTF-8 khi mở trực tiếp tệp CSV. Việc thêm BOM UTF-8 (Byte Order Mark) ở đầu tệp sẽ buộc Excel giải mã UTF-8 chính xác.
Tấn công chèn công thức qua CSV là gì?
Tấn công chèn công thức qua CSV xảy ra khi dữ liệu đầu vào không đáng tin cậy có ký tự kích hoạt công thức ở đầu trường ('=', '+', '-', '@') rồi được xuất ra tệp bảng tính. Khi tệp được mở bằng phần mềm như Excel, bảng tính sẽ tự động thực thi công thức hoặc lệnh trao đổi dữ liệu động (DDE), có thể chạy lệnh hệ thống hoặc đánh cắp dữ liệu.
Các cặp chuyển đổi CSV liên quan
Chuyển đổi bảng tính Excel thành bảng CSV giúp trích xuất dữ liệu dạng bảng thô sang định dạng văn bản phổ biến, tương thích với nhiều phần mềm.
Chuyển tệp CSV dạng văn bản đơn giản thành bảng tính XLSX giàu tính năng, hỗ trợ định dạng dữ liệu nâng cao, công thức và nhiều trang tính.
Việc chuyển đổi các tệp văn bản phẳng thành các cơ sở dữ liệu quan hệ có cấu trúc cho phép bạn chạy các truy vấn nhanh chóng và quản lý các mối quan hệ dữ liệu phức tạp.
Chuyển đổi các tập lệnh sao lưu cơ sở dữ liệu quan hệ thành bảng tính dạng phẳng để phân tích dữ liệu và lập báo cáo đơn giản.
Chuyển tập dữ liệu HDF5 phân cấp thành tệp CSV dữ liệu đo từ xa dạng phẳng, biến các bản ghi khoa học đa chiều phức tạp thành hàng và cột đơn giản để phân tích bằng bảng tính.
Chuyển lưới khoa học NetCDF đa chiều thành tệp CSV dữ liệu đo từ xa dạng phẳng, giúp đọc dữ liệu khí hậu và đại dương phức tạp bằng phần mềm bảng tính cơ bản.
Chuyển tệp vCard sang CSV danh bạ, biến thẻ liên hệ có cấu trúc phân cấp thành các hàng bảng tính để dễ nhập vào cơ sở dữ liệu.