logo
GeekFormat

Trình chuyển đổi SQL

Trình chuyển đổi SQL trực tuyến GeekFormat chuyển đổi câu lệnh SQL INSERT và tập lệnh CREATE TABLE chỉ với một cú nhấp sang các định dạng JSON, CSV, TSV, XML, YAML, bảng HTML, bảng Markdown, JSON Lines và các định dạng khác. Hỗ trợ nhiều câu lệnh INSERT, phân tích hàng loạt bộ giá trị nhiều phần tử, tự động nhận dạng số, chuỗi, NULL, giá trị boolean và literal thập lục phân, tương thích với kiểu trích dẫn của các phương ngữ MySQL, PostgreSQL, SQLite, SQL Server, dữ liệu nhiều bảng có thể xuất riêng biệt hoặc gộp lại. Cũng có thể tái tạo ngược câu lệnh INSERT và chuyển đổi phương ngữ. Xử lý hoàn toàn cục bộ trong trình duyệt, tất cả dữ liệu vẫn ở trên thiết bị.

Đề xuất Liên quan

Về chuyển đổi SQL: chuyển tập lệnh SQL sang các định dạng JSON/CSV/XML và các định dạng khác

Chuyển đổi SQL (SQL Conversion) là quá trình trích xuất dữ liệu từ tập lệnh SQL và tổ chức lại thành các định dạng dữ liệu khác như JSON, CSV, XML, YAML, HTML, Markdown v.v. SQL (Structured Query Language, ngôn ngữ truy vấn có cấu trúc) là ngôn ngữ truy vấn chuẩn cho cơ sở dữ liệu quan hệ, các công cụ xuất cơ sở dữ liệu (như mysqldump, pg_dump) thường xuất dữ liệu dưới dạng câu lệnh INSERT trong tập lệnh SQL, định dạng này tuy thuận tiện cho nhập vào cơ sở dữ liệu, nhưng lại bất tiện cho việc đọc bằng chương trình, phân tích dữ liệu hoặc trao đổi giữa các hệ thống, do đó cần chuyển đổi sang các định dạng phổ quát hơn.

Các tập lệnh xuất dữ liệu SQL phổ biến chứa hai loại câu lệnh: CREATE TABLE dùng để định nghĩa cấu trúc bảng (tên cột, kiểu dữ liệu, ràng buộc) và INSERT INTO ... VALUES (...) dùng để chèn dữ liệu cụ thể. Công cụ này phân tích cả hai loại câu lệnh, trích xuất định nghĩa cột và thông tin kiểu từ CREATE TABLE, dòng dữ liệu thực tế từ INSERT, sau đó tổ chức lại đầu ra theo định dạng người dùng chọn. Toàn bộ quá trình phân tích thực hiện cục bộ trong trình duyệt, không phụ thuộc vào bất kỳ dịch vụ backend nào.

Tại sao cần chuyển đổi SQL sang các định dạng khác? Tập lệnh SQL tuy phổ quát, nhưng lại bất tiện trong các kịch bản sau: thứ nhất, chương trình frontend đọc JSON dễ hơn nhiều so với phân tích SQL, không cần thêm trình phân tích SQL; thứ hai, các phần mềm bảng tính như Excel, Google Sheets hỗ trợ gốc CSV chứ không phải SQL; thứ ba, trong kịch bản tệp cấu hình và tài liệu YAML, Markdown dễ đọc hơn SQL; thứ tư, trao đổi dữ liệu giữa các hệ thống thường dùng XML hoặc JSON làm định dạng trung lập. Sau khi chuyển SQL sang các định dạng phổ quát này, dữ liệu có thể được tiêu thụ trực tiếp bởi nhiều công cụ và ngôn ngữ hơn.

Trình phân tích SQL của công cụ này được viết tay, tập trung vào phân tích câu lệnh INSERT và CREATE TABLE. Đối với INSERT, hỗ trợ cả bộ giá trị đơn (INSERT INTO t (a,b) VALUES (1,2)) và bộ giá trị nhiều phần tử (INSERT INTO t (a,b) VALUES (1,2), (3,4), (5,6)), tự động ánh xạ dữ liệu theo tên cột. Đối với CREATE TABLE, hỗ trợ phân tích định nghĩa cột, kiểu dữ liệu (VARCHAR(255), INT, DECIMAL(10,2) v.v. với độ dài trong ngoặc), ràng buộc và mệnh đề NOT NULL, PRIMARY KEY, IF NOT EXISTS, xử lý đúng ngoặc lồng nhau để tránh chia sai.

Nhận dạng kiểu là khía cạnh quan trọng của chuyển đổi SQL. Công cụ tự động xác định kiểu dựa trên hình thức literal của giá trị: giá trị được bao bởi dấu ngoặc đơn hoặc dấu ngoặc kép là chuỗi; NULL (không phân biệt chữ hoa chữ thường) là giá trị rỗng; TRUE/FALSE là giá trị boolean; 0x..., X'...', B'...' là literal thập lục phân; số thuần (có dấu trừ, dấu thập phân, ký hiệu khoa học) là số. Nhận dạng kiểu tự động này đảm bảo các định dạng chuyển đổi như JSON, CSV giữ được ngữ nghĩa của dữ liệu gốc (ví dụ số 1 không thành chuỗi "1"), thuận tiện cho việc xử lý đúng bởi chương trình downstream.

Khác biệt về kiểu trích dẫn giữa các phương ngữ cơ sở dữ liệu là cạm bẫy phổ biến khi phân tích SQL. MySQL mặc định dùng backtick (`) để bao định danh (tên bảng, tên cột), PostgreSQL dùng dấu ngoặc kép ("), SQL Server/T-SQL dùng dấu ngoặc vuông ([]), SQL chuẩn cũng dùng dấu ngoặc kép. Hàm unquoteIdentifier của công cụ này tự động nhận dạng và loại bỏ các trích dẫn này, đồng thời xử lý ký tự thoát trong trích dẫn (như `` → `, "" → "). Trong chế độ tái tạo SQL, câu lệnh INSERT được tạo lại với kiểu trích dẫn tương ứng cho phương ngữ mục tiêu.

Ký tự thoát chuỗi SQL là một chi tiết kỹ thuật quan trọng khác. Tiêu chuẩn SQL định nghĩa thoát dấu ngoặc đơn trong chuỗi bằng cách nhân đôi ('It''s' đại diện cho It's), MySQL mặc định cũng hỗ trợ thoát bằng backslash (\n, \t, \', \", \\\\, \0, \Z v.v.). Trình phân tích chuỗi của công cụ này đồng thời xử lý cả hai cơ chế thoát, khôi phục đúng nội dung chuỗi gốc. Khi chuyển đổi sang CSV, các trường chứa dấu phẩy, dấu ngoặc kép, dấu xuống dòng được thoát lại theo tiêu chuẩn RFC 4180; khi chuyển đổi sang XML/HTML, các ký tự đặc biệt như &, <, >, ", ' được thoát.

Xử lý frontend thuần là nguyên tắc thiết kế cốt lõi của công cụ này. Toàn bộ phân tích SQL và chuyển đổi dữ liệu thực hiện trong engine JavaScript của trình duyệt, không gửi bất kỳ dữ liệu nào đến máy chủ. Điều này có nghĩa là ngay cả khi tập lệnh SQL chứa dữ liệu nhạy cảm của người dùng, thông tin thương mại nhạy cảm hoặc cấu trúc cơ sở dữ liệu nội bộ, cũng không bị rò rỉ ra ngoài. Thiết kế này đặc biệt phù hợp để xử lý xuất cơ sở dữ liệu sản xuất, không cần lo lắng về vấn đề tuân thủ dữ liệu. Đồng thời xử lý frontend không có độ trễ mạng, tốc độ chuyển đổi chỉ bị giới hạn bởi CPU và bộ nhớ của thiết bị.

So với các công cụ chuyển đổi SQL dòng lệnh truyền thống (như sql2csv, sqlparser), công cụ này có một số ưu điểm: không cần cài đặt và cấu hình môi trường, mở trang web là dùng được; cung cấp giao diện trực quan để xem trước kết quả chuyển đổi theo thời gian thực; hỗ trợ chuyển đổi giữa nhiều định dạng đầu ra chỉ với một cú nhấp; tích hợp dữ liệu mẫu và tài liệu hướng dẫn; thiết kế đáp ứng di động để dùng ở bất kỳ đâu. Tuy nhiên công cụ tập trung vào trích xuất dữ liệu, không xử lý sự khác biệt phương ngữ SQL phức tạp (như toán tử JSONB của PostgreSQL, ON DUPLICATE KEY UPDATE của MySQL) và tính năng nâng cao (thủ tục lưu trữ, hàm, trigger); khi có nhu cầu như vậy, nên dùng công cụ cơ sở dữ liệu gốc hoặc nền tảng ETL chuyên dụng.

Khi sử dụng công cụ chuyển đổi SQL, có một số thực hành tốt cần lưu ý: thứ nhất, trước khi chuyển đổi hãy kiểm tra xem tập lệnh SQL có dữ liệu hoàn chỉnh (câu lệnh INSERT) không, chứ không chỉ có câu truy vấn (SELECT), SELECT không được phân tích; thứ hai, đối với tập lệnh SQL nhiều bảng, khuyến nghị bật «Xuất riêng nhiều bảng» để giữ thông tin cấu trúc bảng; thứ ba, khi xử lý SQL có chứa ký tự Trung Quốc, đối với đầu ra CSV khuyến nghị bật «Bao gồm BOM» để đảm bảo Excel nhận dạng đúng mã hóa; thứ tư, khi xử lý SQL dump lớn, khuyến nghị tắt «đầu ra đẹp» để giảm kích thước đầu ra; thứ năm, khi di chuyển giữa các cơ sở dữ liệu, có thể dùng chế độ «Tái tạo SQL» để chuyển phương ngữ, nhưng các kiểu phức tạp (như mảng PostgreSQL, JSONB) có thể cần điều chỉnh thủ công.

Trường hợp sử dụng

  • Chuyển đổi tập lệnh SQL do mysqldump hoặc pg_dump xuất sang JSON, để nhập dữ liệu qua API hoặc tiêu thụ dữ liệu frontend
  • Chuyển đổi câu lệnh INSERT của cơ sở dữ liệu sang tệp CSV, để nhập vào Excel/WPS/Google Sheets nhằm phân tích dữ liệu hoặc tạo báo cáo
  • Trích xuất dữ liệu từ tập lệnh sao lưu SQL và chuyển sang XML, để trao đổi dữ liệu giữa các hệ thống hoặc tích hợp giao diện SOAP
  • Chuyển đổi dữ liệu SQL sang định dạng cấu hình YAML, cho kịch bản cấu hình Ansible, Docker Compose, Kubernetes và các kịch bản khác
  • Chuyển đổi kết quả truy vấn SQL (xuất dưới dạng INSERT) sang bảng HTML, để nhúng trực tiếp vào trang web
  • Chuyển đổi dữ liệu SQL sang bảng Markdown, để dán vào README, trang tài liệu, blog kỹ thuật nhằm hiển thị dữ liệu mẫu
  • Trích xuất dữ liệu từ tập lệnh CREATE TABLE + INSERT hoàn chỉnh và chuyển sang JSON Lines để lập chỉ mục hàng loạt Elasticsearch
  • Khi di chuyển cơ sở dữ liệu, tái tạo tập lệnh INSERT MySQL thành câu lệnh INSERT phương ngữ PostgreSQL, để dễ nhập dữ liệu giữa các cơ sở dữ liệu
  • Quản lý dữ liệu kiểm thử: chuyển đổi dữ liệu seed SQL kiểm thử thành cấu hình JSON, để chương trình dễ đọc và quản lý phiên bản
  • Trình diễn giảng dạy: chuyển đổi câu lệnh SQL sang nhiều định dạng để so sánh, giúp người học hiểu sự khác biệt giữa các dạng biểu diễn dữ liệu
  • Tiền xử lý ETL: chuyển đổi SQL dump upstream sang JSON/CSV có cấu trúc làm đầu vào cho đường ống ETL downstream
  • Phân tích dữ liệu: trích xuất dữ liệu quan trọng từ xuất SQL sang CSV, dùng pandas, R và các công cụ khác để phân tích thống kê
  • Bàn giao khách hàng: chuyển đổi xuất cơ sở dữ liệu sang định dạng JSON hoặc CSV phổ quát hơn để bàn giao cho nhân viên phi kỹ thuật xem
  • Lưu trữ dữ liệu: chuyển đổi tập lệnh INSERT của cơ sở dữ liệu lịch sử sang YAML hoặc Markdown dễ đọc hơn để lưu trữ

Cách Sử dụng

  1. Dán tập lệnh SQL vào ô nhập bên trái hoặc nhấp nút «Tải lên SQL» để chọn tệp .sql/.txt
  2. Nhấp nút «Ví dụ» để tải mẫu SQL tích hợp (bao gồm CREATE TABLE và INSERT nhiều bảng)
  3. Chọn định dạng mục tiêu trong menu thả xuống định dạng ở đầu bảng điều khiển đầu ra bên phải (JSON, CSV, XML, YAML v.v., tổng cộng 9 định dạng)
  4. Nhấp nút «Cài đặt» để điều chỉnh tùy chọn chuyển đổi: đầu ra đẹp, bao gồm BOM, xuất riêng nhiều bảng, dấu phân tách CSV, tên khóa gốc JSON, phương ngữ SQL v.v.
  5. Nhấp nút «Chuyển đổi» để thực hiện chuyển đổi, kết quả tự động hiển thị trong bảng điều khiển bên phải, thanh trạng thái bên dưới hiển thị thống kê: số bảng, số dòng, số INSERT v.v.
  6. Nhấp «Sao chép» để sao chép kết quả chuyển đổi vào clipboard, hoặc «Tải xuống» để lưu kết quả dưới dạng tệp định dạng tương ứng (ví dụ result.json, result.csv)
  7. Chuyển định dạng đầu ra sẽ tự động chuyển đổi lại, không cần nhấp lại nút chuyển đổi

Tính năng

  • Chín định dạng đầu ra: JSON, JSON Lines, CSV, TSV, XML, YAML, bảng HTML, bảng Markdown, tái tạo SQL — chuyển định dạng một cú nhấp với tự động chuyển đổi lại
  • Phân tích câu lệnh INSERT: tự động nhận dạng cú pháp INSERT INTO ... VALUES (...), hỗ trợ bộ giá trị đơn và nhiều phần tử để chèn hàng loạt (nhiều dòng dữ liệu trong một INSERT)
  • Nhận dạng CREATE TABLE: phân tích câu lệnh CREATE TABLE để trích xuất định nghĩa cột, kiểu dữ liệu, ràng buộc NOT NULL, PRIMARY KEY và các ràng buộc khác, có thể dùng để suy luận kiểu trường
  • Xử lý dữ liệu nhiều bảng: khi tập lệnh chứa nhiều bảng, có thể xuất theo từng bảng (với dấu phân tách tên bảng) hoặc xuất gộp, tự động tổng hợp các cột và hàng
  • Tự động nhận dạng kiểu: phát hiện thông minh số (nguyên/dấu phẩy động), chuỗi, NULL, giá trị boolean (TRUE/FALSE), literal thập lục phân (0x..., X'...', B'...'), giữ nguyên ngữ nghĩa kiểu gốc
  • Tương thích trích dẫn nhiều phương ngữ: nhận dạng backtick MySQL (`), dấu ngoặc kép PostgreSQL ("), dấu ngoặc vuông SQL Server ([]) và trích dẫn chuẩn, tự động bỏ trích dẫn định danh
  • Ký tự thoát chuỗi SQL: xử lý ký tự thoát SQL chuẩn ('' → ') và ký tự thoát backslash MySQL (\n, \r, \t, \0, \', \") để khôi phục đúng chuỗi có ký tự đặc biệt
  • Tái tạo phương ngữ SQL: có thể tạo lại câu lệnh INSERT trong phương ngữ MySQL, PostgreSQL, SQLite hoặc SQL chuẩn, hỗ trợ tên bảng tùy chỉnh và tùy chọn tạo CREATE TABLE
  • Cấu hình CSV linh hoạt: chọn dấu phân tách (dấu phẩy/chấm phẩy/Tab/dấu gạch đứng), tùy chọn tiêu đề UTF-8 BOM (tương thích Excel), tùy chọn thụt lề đẹp, tuân thủ tiêu chuẩn RFC 4180
  • Nhiều cấu trúc JSON: chọn nhóm theo bảng (khóa gốc tables), dữ liệu thuần (khóa gốc data) hoặc mảng thuần (không khóa gốc) cho các kịch bản tiêu thụ khác nhau
  • Hiển thị thống kê thời gian thực: sau khi chuyển đổi hiển thị số bảng, tổng số dòng, số câu lệnh INSERT, số ký tự đầu ra, để dễ kiểm tra tính đầy đủ của kết quả
  • Tải lên và tải xuống tệp: hỗ trợ tải lên tệp .sql/.txt/.csv/.tsv/.json để phân tích trực tiếp, kết quả chuyển đổi có thể tải xuống dưới dạng tệp định dạng tương ứng (như .json, .csv, .yaml)
  • Quản lý lịch sử: thanh lịch sử tích hợp bên trái tự động lưu đầu vào SQL đã chuyển đổi gần đây, cho phép tải lại nhanh các tập lệnh trước đó
  • Thiết kế đáp ứng di động: trên điện thoại tự động chuyển sang bố cục Tab nhập/kết quả, trên máy tính dùng separator hai panel có thể kéo, tất cả tương tác đều khả dụng trên di động
  • Xử lý hoàn toàn cục bộ trong trình duyệt: toàn bộ phân tích và chuyển đổi thực hiện trong JavaScript trình duyệt, không yêu cầu máy chủ, dữ liệu SQL không rời thiết bị, phù hợp xử lý xuất cơ sở dữ liệu có thông tin nhạy cảm

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

SQL có thể chuyển đổi sang những định dạng nào?

Công cụ hỗ trợ chín định dạng đầu ra: JSON (mảng có cấu trúc), JSON Lines (một đối tượng JSON mỗi dòng), CSV (phân tách bằng dấu phẩy), TSV (phân tách bằng Tab), XML (tài liệu XML chuẩn với thẻ), YAML (định dạng cấu hình), bảng HTML (có kiểu để xem trực tiếp trong trình duyệt), bảng Markdown (cú pháp tài liệu), tái tạo SQL (tạo lại câu lệnh INSERT có thể đổi phương ngữ). Chuyển đổi một cú nhấp trong menu thả xuống định dạng bên phải sẽ tự động chuyển đổi lại.

Những câu lệnh SQL nào được hỗ trợ để phân tích?

Chủ yếu phân tích câu lệnh INSERT INTO ... VALUES (...) để trích xuất dữ liệu, đồng thời nhận dạng câu lệnh CREATE TABLE để lấy định nghĩa cột và thông tin kiểu. Hỗ trợ INSERT đơn, INSERT bộ giá trị nhiều phần tử (nhiều dòng dữ liệu trong một INSERT), nhiều câu lệnh INSERT, INSERT cho nhiều bảng. Chú thích (-- một dòng, /* */ nhiều dòng, # MySQL một dòng) được tự động loại bỏ, không ảnh hưởng đến phân tích.

Những phương ngữ cơ sở dữ liệu nào được hỗ trợ?

Khi phân tích tương thích với kiểu trích dẫn định danh của MySQL (backtick `), PostgreSQL (dấu ngoặc kép "), SQL Server (dấu ngoặc vuông []) và SQL chuẩn, tự động bỏ trích dẫn để khôi phục tên cột và tên bảng gốc. Trong chế độ tái tạo SQL có thể chọn phương ngữ MySQL, PostgreSQL, SQLite hoặc SQL chuẩn để tạo lại INSERT, trích dẫn và biểu diễn giá trị boolean khác nhau giữa các phương ngữ.

Nhiều bảng trong tập lệnh SQL được xử lý thế nào?

Công cụ tự động tổng hợp dữ liệu INSERT theo tên bảng. Khi bật tùy chọn «Xuất riêng nhiều bảng» trong cài đặt, các định dạng bảng như CSV/HTML/Markdown sẽ xuất theo từng đoạn theo bảng (với dấu tên bảng), còn các định dạng có cấu trúc như JSON/XML sẽ nhóm theo tên bảng. Khi tắt tùy chọn này, CSV chỉ xuất dữ liệu của bảng đầu tiên, JSON có thể xuất dưới dạng mảng thuần khi chọn «không khóa gốc».

NULL, giá trị boolean và ký tự đặc biệt trong SQL được xử lý thế nào?

Công cụ tự động nhận dạng NULL (không phân biệt chữ hoa chữ thường), giá trị boolean TRUE/FALSE, literal thập lục phân (0x..., X'...', B'...'), số nguyên và số dấu phẩy động. Chuỗi được tự động xử lý với ký tự thoát SQL chuẩn ('' → ') và ký tự thoát backslash MySQL (\n, \t, \' v.v.) để khôi phục đúng nội dung gốc có dấu xuống dòng, dấu ngoặc kép, ký tự đặc biệt. Khi xuất CSV theo tiêu chuẩn RFC 4180, các trường chứa dấu phẩy, dấu ngoặc kép, dấu xuống dòng được đặt trong dấu ngoặc kép.

JSON chuyển đổi có cấu trúc như thế nào?

Đầu ra JSON hỗ trợ ba cấu trúc: «khóa gốc tables» (nhóm theo tên bảng, khuyến nghị cho kịch bản nhiều bảng), «khóa gốc data» (bọc thống nhất), «không khóa gốc» (mảng thuần, phù hợp cho một bảng hoặc xử lý luồng). Ví dụ bảng users đơn lẻ được chuyển thành mảng [{"id":1,"name":"Alice"},...], nhiều bảng được nhóm theo tên bảng thành {"users":[...],"orders":[...]}. Có thể chọn trong cài đặt.

Tệp SQL tải lên có được lưu trên máy chủ không?

Không. Đây là ứng dụng frontend thuần, toàn bộ phân tích và chuyển đổi thực hiện cục bộ trong JavaScript trình duyệt, nội dung SQL hoặc kết quả chuyển đổi không được gửi đến bất kỳ máy chủ nào. Tệp tải lên được đọc trực tiếp trong trình duyệt qua FileReader, sau khi đóng trang dữ liệu tự động bị xóa. Phù hợp để xử lý xuất cơ sở dữ liệu chứa thông tin nhạy cảm của người dùng hoặc thông tin thương mại nhạy cảm.

Dấu ngoặc vuông định danh của SQL Server có được hỗ trợ không?

Có. Công cụ nhận dạng định danh dấu ngoặc vuông theo kiểu SQL Server/T-SQL (như [users], [order details]) và tự động loại bỏ dấu ngoặc vuông để khôi phục tên gốc. Cũng hỗ trợ backtick MySQL, dấu ngoặc kép PostgreSQL. Trong chế độ tái tạo SQL, chọn các phương ngữ khác nhau sẽ dùng kiểu trích dẫn tương ứng để tạo lại INSERT.

Tại sao tập lệnh SQL của tôi không có dữ liệu sau khi chuyển đổi?

Hãy kiểm tra xem SQL có chứa câu lệnh INSERT INTO ... VALUES (...) không. Công cụ chỉ phân tích câu lệnh INSERT để trích xuất dữ liệu, câu truy vấn SELECT không tạo đầu ra. Nếu chỉ có câu lệnh CREATE TABLE, sẽ hiển thị cảnh báo «Chỉ phát hiện CREATE TABLE, không có dòng dữ liệu để chuyển đổi». Hãy đảm bảo tập lệnh SQL là xuất dữ liệu (dump), không phải câu truy vấn.

Thủ tục lưu trữ, hàm và trigger có được hỗ trợ không?

Không. Công cụ tập trung vào trích xuất dữ liệu và chỉ phân tích câu lệnh INSERT và CREATE TABLE. Thủ tục lưu trữ (CREATE PROCEDURE), hàm (CREATE FUNCTION), trigger (CREATE TRIGGER), view (CREATE VIEW) và các định nghĩa đối tượng cơ sở dữ liệu khác không được phân tích. Để di chuyển các đối tượng này, nên sử dụng công cụ cơ sở dữ liệu gốc như pg_dump, mysqldump.

Ký tự Trung Quốc trong tệp CSV có mở đúng trong Excel không?

Có. Sau khi bật tùy chọn «Bao gồm BOM» trong cài đặt, tệp CSV sẽ có tiêu đề UTF-8 BOM (\uFEFF), Excel sẽ nhận dạng đúng mã hóa, hiển thị ký tự Trung Quốc và các ký tự không phải ASCII khác. Không có BOM, một số phiên bản Excel có thể hiển thị ký tự Trung Quốc UTF-8 thành ký tự loạn. Các phần mềm bảng tính hiện đại như Google Sheets, WPS thường nhận dạng đúng mã hóa ngay cả khi không có BOM.

Có thể tái tạo ngược câu lệnh INSERT từ tập lệnh SQL không?

Có. Chọn định dạng đầu ra «Tái tạo SQL» để tạo lại câu lệnh INSERT. Hỗ trợ chọn phương ngữ mục tiêu (MySQL/PostgreSQL/SQLite/SQL chuẩn), tên bảng tùy chỉnh, tùy chọn tạo câu lệnh CREATE TABLE (tự động suy luận kiểu cột INT/BIGINT/FLOAT/VARCHAR/TEXT/BOOLEAN dựa trên dữ liệu). Điều này phù hợp để tái tạo tập lệnh MySQL sang phương ngữ PostgreSQL hoặc nhập lại vào cơ sở dữ liệu sau khi đổi tên bảng.

Sự khác biệt giữa JSON Lines và JSON là gì? Khi nào dùng JSON Lines?

Đầu ra JSON là một mảng JSON hoàn chỉnh ([{...},{...}]), phù hợp cho chương trình tải toàn bộ vào bộ nhớ. JSON Lines (còn gọi là NDJSON) có một đối tượng JSON độc lập mỗi dòng, phù hợp cho xử lý luồng, nhập dữ liệu lớn, bulk API Elasticsearch, phân tích log v.v., có thể đọc từng dòng mà không tốn nhiều bộ nhớ. Công cụ hỗ trợ chuyển đổi tự do giữa hai định dạng.

Thứ tự cột gốc có được giữ nguyên trong kết quả chuyển đổi không?

Có. Công cụ giữ tên cột theo thứ tự được chỉ định trong câu lệnh INSERT. Nếu INSERT không chỉ định rõ tên cột (như INSERT INTO t VALUES (...)), thì tên cột thay thế col_1, col_2 v.v. được tạo dựa trên số giá trị trong dòng đầu tiên. Thứ tự cột của mỗi bảng trong nhiều bảng được giữ độc lập, khi xuất gộp được trình bày riêng theo bảng.

Công cụ hỗ trợ tệp SQL lớn đến mức nào?

Về lý thuyết không có giới hạn trên cứng, bị giới hạn bởi bộ nhớ trình duyệt. Thông thường các tệp SQL dump vài chục MB được xử lý mượt mà, các tệp rất lớn (vài trăm MB) có thể chậm lại do thiếu bộ nhớ trình duyệt. Khuyến nghị chia các tệp rất lớn thành nhiều tệp nhỏ để chuyển đổi hàng loạt, hoặc tắt «đầu ra đẹp» để giảm sử dụng bộ nhớ. Toàn bộ phân tích thực hiện cục bộ trong trình duyệt, không bị giới hạn truyền tải mạng.

Xử lý sự cố

Không có dữ liệu đầu ra sau khi chuyển đổi?

Nguyên nhân 1: Tập lệnh SQL chỉ chứa câu truy vấn SELECT, công cụ này chỉ phân tích câu lệnh INSERT để trích xuất dữ liệu, không thực thi truy vấn. Giải pháp: dùng mysqldump/pg_dump để xuất dữ liệu dưới dạng câu lệnh INSERT. Nguyên nhân 2: Tập lệnh SQL chỉ có CREATE TABLE không có dòng dữ liệu, sẽ hiển thị cảnh báo. Nguyên nhân 3: Cú pháp câu lệnh INSERT không chuẩn (như thiếu từ khóa VALUES), hãy kiểm tra tính đúng đắn của cú pháp SQL. Nguyên nhân 4: Toàn bộ nội dung trong SQL bị chú thích (-- hoặc /* */), hãy kiểm tra xem có ký tự chú thích bị xóa nhầm không.

Ký tự Trung Quốc trong CSV hiển thị loạn trong Excel?

Excel mặc định nhận dạng CSV theo mã hóa GBK, ký tự Trung Quốc trong UTF-8 sẽ hiển thị loạn. Giải pháp: bật tùy chọn «Bao gồm BOM» trong «Cài đặt», tệp CSV đầu ra sẽ có tiêu đề UTF-8 BOM (\uFEFF), Excel sẽ nhận dạng đúng mã hóa UTF-8. Nếu đã xuất CSV không có BOM, có thể lưu lại trong Notepad dưới dạng «UTF-8 với BOM» rồi mở trong Excel, hoặc dùng phần mềm bảng tính hiện đại như Google Sheets, WPS.

Số trong JSON trở thành chuỗi?

Nguyên nhân: số trong SQL được bao bởi dấu ngoặc kép (như '123' thay vì 123), công cụ phân tích chúng thành chuỗi. Giải pháp: kiểm tra xem số trong tập lệnh SQL có được bao bởi dấu ngoặc kép không, hãy bỏ dấu ngoặc kép. Nếu dữ liệu gốc vốn như vậy (như mã ZIP thường được lưu thành chuỗi), đây là hành vi mong đợi, vì giữ ngữ nghĩa chuỗi giúp tránh mất số 0 đầu (như 01234 sẽ không bị phân tích thành 1234).

Lỗi chuyển đổi chuỗi có ký tự đặc biệt?

Nguyên nhân: ký tự đặc biệt (dấu xuống dòng, dấu ngoặc kép, backslash) trong chuỗi SQL không được thoát đúng. Công cụ này hỗ trợ ký tự thoát SQL chuẩn ('' → ') và ký tự thoát backslash MySQL (\n, \' v.v.), nhưng nếu SQL gốc dùng ký tự thoát không chuẩn (như chuỗi E'...' của PostgreSQL), có thể không khôi phục được đúng. Giải pháp: kiểm tra xem ký tự thoát SQL có đúng chuẩn không, nếu cần có thể điều chỉnh thủ công trong trình soạn thảo văn bản trước khi chuyển đổi.

Sau khi chuyển đổi SQL nhiều bảng chỉ thấy bảng đầu tiên?

Nguyên nhân: tùy chọn «Xuất riêng nhiều bảng» không được bật, các định dạng bảng như CSV/HTML/Markdown mặc định chỉ xuất bảng đầu tiên. Giải pháp: bật tùy chọn «Xuất riêng nhiều bảng» trong «Cài đặt», CSV sẽ xuất theo từng đoạn theo bảng (với dấu # Table: tên bảng), JSON sẽ nhóm theo tên bảng ({tên_bảng1:[...],tên_bảng2:[...]}). Lưu ý: định dạng JSON Lines không phân biệt bảng, tất cả các dòng sẽ được gộp trong đầu ra.

Sau khi tái tạo SQL, trích dẫn tên bảng hoặc tên cột không đúng?

Nguyên nhân: khi tái tạo đã chọn sai phương ngữ, các phương ngữ khác nhau dùng kiểu trích dẫn khác nhau (backtick MySQL, dấu ngoặc kép PostgreSQL, dấu ngoặc vuông SQL Server). Giải pháp: chọn phương ngữ SQL mục tiêu trong «Cài đặt», công cụ sẽ tạo lại INSERT với kiểu trích dẫn tương ứng. Ví dụ khi chọn PostgreSQL tên bảng sẽ thành "users", khi chọn MySQL sẽ thành `users`.

Thuật ngữ

SQL (Structured Query Language)
Ngôn ngữ truy vấn có cấu trúc, ngôn ngữ truy vấn và thao tác chuẩn cho cơ sở dữ liệu quan hệ (MySQL, PostgreSQL, Oracle, SQL Server, SQLite), bao gồm các ngôn ngữ con DDL (định nghĩa dữ liệu), DML (thao tác dữ liệu), DQL (truy vấn dữ liệu), DCL (điều khiển dữ liệu).
Câu lệnh INSERT
Câu lệnh SQL dùng để chèn dữ liệu vào bảng, cú pháp INSERT INTO table (cols) VALUES (vals), hỗ trợ chèn hàng loạt bộ giá trị đơn và nhiều phần tử. Công cụ này chủ yếu phân tích câu lệnh INSERT để trích xuất dữ liệu.
Câu lệnh CREATE TABLE
Câu lệnh DDL trong SQL dùng để tạo bảng, định nghĩa tên cột, kiểu dữ liệu, ràng buộc (NOT NULL, PRIMARY KEY, UNIQUE v.v.). Công cụ này có thể phân tích CREATE TABLE để trích xuất thông tin định nghĩa cột.
Bộ giá trị VALUES
Danh sách giá trị trong ngoặc đơn sau từ khóa VALUES trong câu lệnh INSERT, ví dụ (1, 'Alice', TRUE). Một INSERT có thể chứa nhiều bộ để chèn hàng loạt: VALUES (1,'A'), (2,'B'), (3,'C').
Phương ngữ SQL
Sự khác biệt trong triển khai mở rộng tiêu chuẩn SQL bởi các nhà sản xuất cơ sở dữ liệu khác nhau, ví dụ MySQL dùng backtick, PostgreSQL dùng dấu ngoặc kép, SQL Server dùng dấu ngoặc vuông để bao định danh, biểu diễn giá trị boolean (TRUE/1), cột tự tăng (AUTO_INCREMENT/SERIAL) v.v. cũng khác nhau.
Trích dẫn định danh
Ký tự đặc biệt trong SQL dùng để bao định danh như tên bảng, tên cột. MySQL dùng backtick `name`, PostgreSQL và SQL chuẩn dùng dấu ngoặc kép "name", SQL Server dùng dấu ngoặc vuông [name], để thoát từ khóa dành riêng hoặc trong kịch bản phân biệt chữ hoa chữ thường.
Ký tự thoát SQL
Cơ chế biểu diễn ký tự đặc biệt trong chuỗi SQL. Tiêu chuẩn SQL dùng nhân đôi dấu ngoặc đơn ('') cho dấu ngoặc đơn; MySQL cũng hỗ trợ thoát bằng backslash (\n, \t, \', \\\\). Công cụ này hỗ trợ khôi phục cả hai cơ chế thoát.
Giá trị NULL
Giá trị đặc biệt trong SQL biểu diễn dữ liệu bị thiếu hoặc không xác định, không phân biệt chữ hoa chữ thường (NULL/null/Null). NULL không bằng chuỗi rỗng hoặc 0, khi chuyển đổi sang JSON ánh xạ thành null, trong CSV thường để trống.
Literal thập lục phân
Cú pháp literal trong SQL để biểu diễn dữ liệu nhị phân. MySQL hỗ trợ dạng 0x... và X'...', PostgreSQL hỗ trợ X'...' và B'...' (nhị phân). Công cụ này giữ nguyên literal thập lục phân.
JSON Lines (NDJSON)
Định dạng văn bản có một đối tượng JSON độc lập mỗi dòng, phần mở rộng .jsonl. Phù hợp cho xử lý luồng, nhập dữ liệu lớn và bulk API Elasticsearch, tiết kiệm bộ nhớ so với mảng JSON hoàn chỉnh.
RFC 4180
Tiêu chuẩn quốc tế cho định dạng CSV (Common Format and MIME Type for Comma-Separated Values Files), định nghĩa các quy tắc về phân tách trường, thoát trích dẫn, xử lý dấu xuống dòng v.v. Đầu ra CSV của công cụ này tuân thủ tiêu chuẩn này.
BOM (Byte Order Mark)
Dấu thứ tự byte, ký tự U+FEFF. BOM ở đầu tệp UTF-8 giúp phần mềm như Excel nhận dạng đúng mã hóa, tránh hiển thị ký tự Trung Quốc thành ký tự loạn. Đầu ra CSV của công cụ này có thể tùy chọn bao gồm BOM.
SQL Dump
Tệp tập lệnh SQL xuất từ cơ sở dữ liệu, thường được tạo bởi các công cụ như mysqldump, pg_dump, chứa câu lệnh CREATE TABLE và INSERT, có thể dùng để sao lưu và di chuyển cơ sở dữ liệu.
DDL (Data Definition Language)
Ngôn ngữ định nghĩa dữ liệu, tập con của SQL, bao gồm các câu lệnh CREATE, ALTER, DROP v.v., để định nghĩa và sửa đổi cấu trúc cơ sở dữ liệu (bảng, view, chỉ mục v.v.).

So sánh các định dạng đầu ra được hỗ trợ

So sánh đặc điểm và kịch bản áp dụng của chín định dạng đầu ra:

Định dạngPhần mở rộngĐặc điểmKịch bản tốt nhất
JSON.jsonMảng có cấu trúc, giữ kiểuTích hợp API, đọc chương trình, dữ liệu frontend
JSON Lines.jsonlMột đối tượng JSON mỗi dòngXử lý luồng, Elasticsearch, big data
CSV.csvBảng phân tách dấu phẩy, RFC 4180Excel, phân tích dữ liệu, báo cáo
TSV.tsvBảng phân tách TabDán vào phần mềm bảng tính, tin sinh học
XML.xmlTài liệu có cấu trúc với thẻ và thuộc tínhGiao diện SOAP, tệp cấu hình, hệ thống Java
YAML.yamlĐịnh dạng cấu hình dễ đọc nhấtAnsible, K8s, cấu hình CI/CD
HTML.htmlBảng có kiểu, xem trực tiếp trong trình duyệtHiển thị web, email, báo cáo
Markdown.mdCú pháp bảng MarkdownREADME, trang tài liệu, blog kỹ thuật
Tái tạo SQL.sqlTạo lại INSERT, đổi phương ngữDi chuyển giữa cơ sở dữ liệu, đổi tên bảng

Quy tắc nhận dạng kiểu giá trị SQL

Quy tắc nhận dạng kiểu khi phân tích giá trị SQL (dựa trên hình thức literal):

Literal SQLKiểu nhận dạngĐầu ra JSONĐầu ra CSV
123Số nguyên123123
-45Số nguyên âm-45-45
3.14Số dấu phẩy3.143.14
1e10Ký hiệu khoa học1000000000010000000000
'hello'Chuỗi"hello"hello
NULLGiá trị rỗngnull(rỗng)
TRUEBoolean đúngtrueTRUE
FALSEBoolean saifalseFALSE
0xFFThập lục phân"0xFF"0xFF
X'4142'Thập lục phân"X'4142'"X'4142'

Kiểu trích dẫn định danh trong các phương ngữ cơ sở dữ liệu khác nhau

Sự khác biệt về trích dẫn định danh (tên bảng, tên cột) trong các cơ sở dữ liệu chính:

Cơ sở dữ liệuKiểu trích dẫnVí dụGhi chú
MySQL/MariaDBBacktick ``users`Mặc định bật, phân biệt từ khóa dành riêng
PostgreSQLDấu ngoặc kép ""users"Phân biệt chữ hoa chữ thường, kiểu SQL chuẩn
SQLiteDấu ngoặc kép "/backtick`/ngoặc vuông[]"users" / [users]Tương thích nhiều kiểu
SQL ServerDấu ngoặc vuông [][users]Kiểu mặc định T-SQL
OracleDấu ngoặc kép ""users"Bắt buộc chữ hoa, trích dẫn giữ chữ hoa chữ thường
SQL chuẩnDấu ngoặc kép ""users"Tiêu chuẩn ANSI SQL

Privacy & Security

Tất cả các thao tác của trình chuyển đổi SQL này hoàn toàn thực hiện cục bộ trong trình duyệt của bạn: phân tích SQL, trích xuất dữ liệu, chuyển đổi định dạng — tất cả qua JavaScript trình duyệt ở phía khách, nội dung SQL, tệp tải lên hoặc kết quả chuyển đổi không được gửi qua mạng đến bất kỳ máy chủ nào. Tải tệp lên dùng API FileReader gốc của trình duyệt để đọc trực tiếp vào bộ nhớ, không qua dịch vụ trung gian. Không dùng Cookie để theo dõi, không thu thập bất kỳ đầu vào người dùng hoặc dữ liệu sử dụng nào. Sau khi đóng hoặc làm mới trang, toàn bộ nội dung đầu vào và đầu ra tự động bị xóa khỏi bộ nhớ (lịch sử chỉ được lưu cục bộ trong localStorage của trình duyệt). Phù hợp để xử lý tập lệnh xuất cơ sở dữ liệu chứa thông tin nhạy cảm của người dùng hoặc thông tin thương mại nhạy cảm.

Authoritative References