Công cụ này làm gì
Công cụ này biến một file CSV thành một bảng SQL có thể truy vấn được mà không cần rời khỏi trình duyệt. Thả file vào, file được nạp vào một bảng lưu trong bộ nhớ tên là data; gõ một câu SQL — hoặc bắt đầu từ một trong các ví dụ có sẵn — chạy nó, rồi tải kết quả về dạng CSV hoặc JSON.
Không có gì bị tải lên để làm việc này. Một module WebAssembly được nạp vào tab trình duyệt của bạn đọc file, dựng bảng, và chạy câu SQL của bạn hoàn toàn trên thiết bị của bạn.
Cách sử dụng
Thả một file CSV vào công cụ. Các cột của bạn hiện ra để tham khảo nhanh, và một câu truy vấn xem trước — SELECT * FROM data LIMIT 100 — tự động chạy để bạn thấy ngay các dòng dữ liệu thật. Từ đó, chỉnh sửa ô truy vấn theo câu SQL bạn cần, hoặc nhấp vào một trong các nút ví dụ (SELECT *, COUNT / GROUP BY, WHERE, ORDER BY) để bắt đầu từ một câu truy vấn đã chạy được rồi chỉnh lại tên cột. Nhấp Chạy, xem bảng kết quả, rồi tải về dạng CSV hoặc JSON — file tải về luôn gồm đầy đủ mọi dòng khớp, dù bảng hiển thị trên màn hình chỉ dừng lại sau vài trăm dòng đầu.
SQL được hỗ trợ
Câu truy vấn chạy trên một engine SQL thật (GlueSQL) hoạt động hoàn toàn trong trình duyệt của bạn, hỗ trợ một tập con thực sự hữu ích của SQL chứ không phải toàn bộ bề mặt của một hệ như Postgres: SELECT với danh sách cột, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, các hàm tổng hợp SUM, COUNT, AVG, MIN, MAX, cùng các hàm vô hướng thông dụng và CAST. Một vài câu truy vấn ví dụ để bạn chỉnh theo cột của mình:
SELECT * FROM data WHERE age > 30
SELECT city, SUM(amount) AS total FROM data GROUP BY city ORDER BY total DESC
SELECT name, score FROM data ORDER BY score DESC LIMIT 10
SELECT category, COUNT(*) AS n FROM data GROUP BY category HAVING COUNT(*) > 5
Nếu bạn viết thứ gì đó nằm ngoài tập con này — một hàm window, một subquery lạ, một phép join với bảng thứ hai không tồn tại — câu truy vấn sẽ không chạy, và công cụ hiển thị đúng thông báo lỗi của engine thay vì đoán mò bạn muốn gì.
Cách suy luận kiểu dữ liệu của cột
File CSV không có khái niệm kiểu dữ liệu, nên trước khi câu truy vấn của bạn chạy, công cụ này quyết định từng cột một nên xử lý như số hay như chữ. Một cột chỉ trở thành kiểu số thật khi mọi giá trị trong đó đều là một số hữu hạn thuần túy — không chữ cái, không ký hiệu tiền tệ, không dư thừa gì cả. Có hai ngoại lệ khiến giá trị vẫn giữ dạng chữ dù trông giống số: một giá trị có số 0 đứng đầu mà không phải số thập phân như 0.5 (để một mã kiểu 007 không bị âm thầm biến thành 7), và một giá trị có hơn mười lăm chữ số (để một số tài khoản hay số thẻ dài không bị làm tròn). Chỉ cần một dòng trong cột đó bị bỏ trống hoặc không parse được, cả cột sẽ giữ dạng chữ, để một lỗi gõ nhầm ở một dòng không thể âm thầm làm sai ý nghĩa của SUM hay AVG trên cột đó.
Nếu bạn thực sự cần xử lý một cột dạng chữ như số cho một câu truy vấn cụ thể — chẳng hạn một cột mã mà bạn biết chắc có thể cộng được — hãy bọc nó bằng CAST(column_name AS FLOAT) thay vì trông chờ vào suy luận tự động.
Không có gì rời khỏi trình duyệt của bạn
Cả việc nạp file CSV thành bảng lẫn việc chạy câu SQL trên đó đều diễn ra qua một module WebAssembly chạy bên trong tab trình duyệt của bạn. Không có bước tải lên, không có server nào giữ bản sao file của bạn, và không phụ thuộc vào kết nối internet một khi trang và WebAssembly đã tải xong — dữ liệu của bạn ở lại trên thiết bị của bạn từ lúc thả file đến lúc tải kết quả về.
Giới hạn
Công cụ này xử lý được file tới 50 MB và 1.000.000 dòng. Một file vượt quá một trong hai giới hạn này sẽ bị từ chối ngay từ đầu kèm thông báo rõ ràng, trước khi bất kỳ bảng nào được dựng hay truy vấn nào được thử, để bạn không phải chờ một tab trình duyệt âm thầm hết bộ nhớ.
Bước tiếp theo
Nếu bạn chỉ cần đổi định dạng CSV mà không muốn viết SQL, CSV sang JSON và JSON sang CSV lo phần chuyển đổi định dạng đơn giản, còn CSV sang Excel biến file của bạn thành một workbook XLSX thật sự, mở trực tiếp được trong Excel hay Google Sheets.