Chạy SQL trên CSV & Excel API

Truy vấn file CSV, XLSX, JSON bằng SQL: SELECT, WHERE, JOIN, GROUP BY với SUM / COUNT / AVG, HAVING, ORDER BY, LIMIT. Kết quả JSON hoặc CSV.

POSThttps://apibox.io.vn/v1/csv-query
Dữ liệu & JSON▶ Dùng thử online

Tải lên một hoặc nhiều bảng qua file multipart (CSV với dấu phân cách bất kỳ, XLSX, mảng JSON hoặc JSON lines); mỗi file thành một bảng mang tên file (orders.csv → orders) hoặc tên trường tuỳ chọn. Cũng có thể gửi csv dạng văn bản (bảng t, hoặc tên trong table), data (mảng JSON) hoặc tables {"tên": dòng | "nội dung csv"}. Kiểu dữ liệu được tự nhận diện (số, boolean, chữ; ô trống là NULL; số có số 0 đứng đầu như số điện thoại vẫn giữ dạng chữ).

SQL hỗ trợ: SELECT [DISTINCT] cột, *, t.*, biểu thức và bí danh; FROM với [INNER] JOIN / LEFT JOIN … ON (phép nối bằng nhau dùng hash join) và nối dấu phẩy / CROSS JOIN; WHERE với AND / OR / NOT, so sánh, LIKE (không phân biệt hoa thường, % và _), IN, BETWEEN, IS [NOT] NULL; GROUP BY với COUNT(*), COUNT(DISTINCT), SUM, AVG, MIN, MAX, TOTAL, GROUP_CONCAT; HAVING; ORDER BY theo cột, bí danh hoặc vị trí với ASC / DESC và NULLS FIRST / LAST; LIMIT / OFFSET; CASE, CAST và các hàm LOWER, UPPER, LENGTH, TRIM, SUBSTR, REPLACE, INSTR, CONCAT, ROUND, ABS, FLOOR, CEIL, COALESCE, IFNULL, NULLIF, DATE, YEAR, MONTH, DAY và UNACCENT (bỏ dấu tiếng Việt). Chưa hỗ trợ truy vấn con, UNION và hàm cửa sổ.

Kết quả JSON (columns, rows, số đếm) hoặc format=csv. Giới hạn: 200.000 dòng mỗi bảng, tổng 5.000.000 ô, 10.000 dòng kết quả (max_rows), 8 giây mỗi truy vấn; không lưu dữ liệu.

Tham số

TênVị tríKiểuBắt buộcMặc định
sqlbodystringcóCâu lệnh SELECT (tối đa 20.000 ký tự).
filebodyfilekhôngMột hoặc nhiều file multipart (CSV, XLSX, JSON); tên bảng lấy theo tên file.
csvbodystringkhôngNội dung CSV cho một bảng tên t (hoặc theo table).
databodyarraykhôngMảng JSON các đối tượng (hoặc mảng có dòng tiêu đề) cho một bảng.
tablesbodyobjectkhôngNhiều bảng: {"orders": [...], "customers": "id,name\n1,An"}.
tablebodystringkhôngtTên bảng cho csv / data.
sheetbodystringkhôngTên hoặc số thứ tự sheet XLSX (mặc định: sheet hiển thị đầu tiên).
delimiterbodystringkhôngautoDấu phân cách CSV (mặc định tự nhận diện).
formatbody|querystringkhôngjsonjson hoặc csv.
max_rowsbody|querynumberkhông10000Giới hạn số dòng trả về (1-10.000).

Ví dụ

curl -X POST "https://apibox.io.vn/v1/csv-query" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file1=@./my-file"

Kết quả trả về

{
  "columns": [
    "name",
    "orders",
    "total"
  ],
  "row_count": 3,
  "total_rows": 3,
  "truncated": false,
  "rows": [
    {
      "name": "Trần Thị Bình",
      "orders": 2,
      "total": 600000
    },
    {
      "name": "Lê Văn Cường",
      "orders": 1,
      "total": 450000
    },
    {
      "name": "Nguyễn Văn An",
      "orders": 1,
      "total": 300000
    }
  ],
  "tables": {
    "orders": {
      "rows": 6,
      "columns": [
        "id",
        "customer_id",
        "product",
        "qty",
        "price",
        "date",
        "status"
      ]
    },
    "customers": {
      "rows": 4,
      "columns": [
        "id",
        "name",
        "city",
        "phone"
      ]
    }
  },
  "ms": 3
}

Ứng dụng

  • Nối file xuất đơn hàng với danh sách khách hàng và tính doanh thu từng khách
  • Lọc và tổng hợp bảng Excel lớn mà không cần mở Excel
  • Cho công cụ no-code chạy báo cáo trên file CSV xuất từ sàn TMĐT
  • Kiểm tra chất lượng dữ liệu: trùng lặp, NULL, giá trị bất thường bằng GROUP BY và HAVING

Hỏi đáp

Tên bảng được đặt thế nào?

Theo tên file tải lên bỏ phần mở rộng (Đơn hàng.csv → Đơn_hàng), hoặc theo tên trường multipart nếu không phải file / file1…; trong JSON dùng khoá của tables. Khi chỉ có một bảng có thể gọi là t.

Có hỗ trợ JOIN không?

Có: INNER JOIN và LEFT JOIN với điều kiện ON bất kỳ, cùng nối dấu phẩy / CROSS JOIN. Phép nối bằng nhau (a.id = b.id) dùng hash join nhanh; điều kiện khác so từng cặp dòng, tối đa 5 triệu cặp.

LIKE có phân biệt hoa thường không?

Không. LIKE bỏ qua hoa thường với mọi chữ cái, kể cả tiếng Việt (Áo khớp áo%). Dùng UNACCENT() để bỏ qua cả dấu: WHERE UNACCENT(name) LIKE '%nguyen%'.

API liên quan

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →