Trình chuyển đổi SQL sang CSV

Đôi khi bản sao duy nhất của dữ liệu bạn cần là một tệp .sql từ bản sao lưu, một bản kết xuất gồm các câu lệnh INSERT INTO users (id, email, created_at) VALUES (...). Nạp nó vào cơ sở dữ liệu chỉ để xuất lại thì chậm. Trình chuyển đổi này đọc danh sách cột và từng bộ VALUES trực tiếp từ cú pháp INSERT và tạo ra một tệp CSV mà bạn có thể mở trong Excel, Google Trang tính, Numbers hoặc pandas mà không cần khôi phục lược đồ.

Cách chuyển INSERT SQL sang CSV

  1. 1

    Dán SQL

    Thả vào một hoặc nhiều câu lệnh INSERT. Hỗ trợ cả khối VALUES (...) một hàng lẫn nhiều hàng.

  2. 2

    Tự động phát hiện cột

    Bộ phân tích đọc danh sách `(col1, col2, ...)` ngay trước VALUES và coi đó là hàng tiêu đề của CSV.

  3. 3

    Trích xuất các hàng

    Mỗi bộ `(val1, val2, ...)` trở thành một hàng CSV. Chuỗi trong dấu nháy đơn được gỡ bỏ dấu nháy; số và NULL đi qua dưới dạng văn bản.

  4. 4

    Sao chép CSV

    Lấy kết quả CSV và dán vào một bảng tính, hoặc lưu với phần mở rộng `.csv`.

Bộ phân tích chấp nhận những gì

INSERT INTO users (id, email, created_at) VALUES
  (1, 'alice@example.com', '2024-01-12 09:00:00'),
  (2, 'bob@example.com',   '2024-01-13 10:30:00'),
  (3, 'carol@example.com', '2024-01-13 11:15:00');

Trở thành:

id,email,created_at
1,alice@example.com,2024-01-12 09:00:00
2,bob@example.com,2024-01-13 10:30:00
3,carol@example.com,2024-01-13 11:15:00

Quy tắc thoát CSV được áp dụng

  • Dấu phân tách luôn là dấu phẩy; không có tùy chọn chọn dấu phân tách.
  • Các trường chứa dấu phẩy, dấu nháy kép hoặc dấu xuống dòng được bao trong dấu nháy kép.
  • Dấu nháy kép bên trong được nhân đôi (" thành ""), theo RFC 4180.
  • Dấu nháy đơn ở đầu và cuối của các hằng chuỗi SQL bị loại bỏ.
  • NULL của SQL đi qua dưới dạng văn bản nguyên văn NULL; hãy thay thế ở bước sau nếu công cụ của bạn cần ô trống.

Các giới hạn cần biết

  • Bắt buộc có danh sách cột. Bộ phân tích đọc tiêu đề từ danh sách (col1, col2, ...) trước VALUES. Một câu lệnh INSERT INTO t VALUES (...) trần không có danh sách cột sẽ tạo ra các hàng CSV không có tiêu đề.
  • Mỗi lần một bảng. Nếu bản kết xuất của bạn trộn lẫn INSERT cho các bảng khác nhau, hãy tách chúng ra trước. Các hàng có độ rộng khác nhau tạo ra CSV không đều.
  • Không phân tích CREATE TABLE. Kiểu cột không được sử dụng. Ngày tháng, JSON và blob nhị phân đi qua dưới dạng văn bản thô.
  • Mỗi nhóm ngoặc trở thành một hàng. Bộ phân tích biến mỗi nhóm (...) thành một hàng, vì vậy các mệnh đề cuối chứa ngoặc (ON DUPLICATE KEY UPDATE, RETURNING), lời gọi hàm như NOW(), hoặc mảng lồng nhau như (1,2,3) bên trong một giá trị sẽ thêm các hàng thừa. Hãy giới hạn đầu vào ở các bộ INSERT ... VALUES đơn giản và thay các biểu thức đó bằng hằng số trước khi dán.

Câu hỏi thường gặp

Có, miễn là INSERT tuân theo dạng chuẩn INSERT INTO table (cols) VALUES (...) mà các cơ sở dữ liệu đó dùng chung. Công cụ không chạy một bộ phân tích SQL đầy đủ: nó trích xuất danh sách cột và các bộ giá trị trong ngoặc, vì vậy hãy giữ mỗi câu lệnh ở cú pháp INSERT đơn giản.

Dấu phẩy bên trong các chuỗi SQL đặt trong dấu nháy đơn được giữ nguyên. Ở đầu ra, bất kỳ trường nào chứa dấu phẩy, dấu nháy hoặc dấu xuống dòng đều được bao trong dấu nháy kép và các dấu nháy bên trong được nhân đôi, theo RFC 4180. Các giá trị tự thân chứa ngoặc có thể không tách đúng.

Không. SQL của bạn được gửi đến máy chủ của chúng tôi, phân tích trong một lượt rồi trả về, vì vậy hãy giữ đầu vào ở mức vài megabyte mỗi lần. Với các bản kết xuất rất lớn, hãy chia tệp thành từng phần (một khối INSERT mỗi phần) và chuyển đổi chúng theo từng đoạn.

Không, đầu ra là một tệp CSV phẳng. Kiểu cột, chỉ mục và ràng buộc nằm trong CREATE TABLE và ngoài phạm vi của trình chuyển đổi này.

SQL của bạn chỉ được gửi đến máy chủ của chúng tôi để tạo CSV và không được lưu trữ; chúng tôi giữ một số đếm ẩn danh về số hàng đã chuyển đổi, không bao giờ lưu chính văn bản SQL.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác