Bộ chuyển CSV sang SQL

Đưa dữ liệu CSV vào cơ sở dữ liệu thường nghĩa là phải khởi động một công cụ loader hoặc viết các lệnh COPY / LOAD DATA INFILE chỉ chạy được trên tệp cục bộ. Với tập dữ liệu nhỏ, vài chục, vài trăm, vài nghìn dòng, những câu lệnh INSERT đơn giản mà bạn có thể dán vào bất kỳ console SQL nào thường nhanh hơn. Công cụ này nhận CSV của bạn, lấy một tên bảng, và tạo một INSERT cho mỗi dòng với định danh đặt trong dấu backtick và giá trị đặt trong dấu nháy đơn, an toàn để chạy.

Cách SQL được lắp ráp

  1. 1

    Dán CSV

    CSV chuẩn với dòng tiêu đề tùy chọn. Bộ phân tích xử lý các ô có dấu nháy chứa dấu phân cách.

  2. 2

    Đặt tên bảng

    Ký tự không phải chữ-số trong tên bảng được thay bằng dấu gạch dưới; nếu để trống sẽ dùng `my_table`.

  3. 3

    Cột lấy từ dòng tiêu đề

    Nếu bật chế độ tiêu đề, dòng 1 trở thành danh sách cột. Nếu không, các cột được đặt tên `column_1`, `column_2`, v.v.

  4. 4

    Một INSERT cho mỗi dòng dữ liệu

    Mỗi dòng trở thành `INSERT INTO table (cols) VALUES (...)`. Giá trị đặt trong dấu nháy đơn và dấu nháy bên trong được nhân đôi.

Phương ngữ, cách trích dẫn và khi nào nên dùng cách khác

Bộ tạo nhắm tới SQL kiểu MySQL với dấu backtick quanh định danh và dấu nháy đơn quanh giá trị. Hầu hết cơ sở dữ liệu sẽ chấp nhận nó với vài chỉnh sửa nhỏ.

Bảng tra cứu phương ngữ

Cơ sở dữ liệu Cách trích dẫn định danh Ghi chú
MySQL backtick Chạy được nguyên bản.
MariaDB backtick Chạy được nguyên bản.
PostgreSQL dấu nháy kép Thay ` bằng " trước khi chạy.
SQLite dấu nháy kép Thay ` bằng " hoặc bỏ trích dẫn định danh.
SQL Server dấu ngoặc vuông Thay ` bằng []; chú ý N'...' cho Unicode.

Cách giá trị được escape

Mọi giá trị đều đặt trong dấu nháy đơn và mọi dấu nháy đơn bên trong được nhân đôi (O'Brien thành 'O''Brien'). Đó là cách của chuẩn SQL-92 và chạy được trong mọi cơ sở dữ liệu phổ biến. Bộ chuyển không ép kiểu, mọi thứ được xuất ra dưới dạng chuỗi văn bản, nên việc chuyển kiểu ngầm của cơ sở dữ liệu sẽ biến '42' thành số nguyên khi cột là INT.

Mẹo để nhập sạch

  • Tạo bảng trước. Bộ chuyển chỉ xuất câu lệnh INSERT, không phải CREATE TABLE. Kết hợp với một schema bạn tự định nghĩa hoặc tạo từ ORM.
  • Chia nhỏ tệp lớn. Dán 500-1000 dòng mỗi lần nếu client SQL của bạn có giới hạn kích thước câu lệnh.
  • Bọc trong một transaction. Với bất cứ thứ gì nhiều hơn vài trăm dòng, kẹp phần dán giữa BEGIN;COMMIT; (hoặc START TRANSACTION; / COMMIT;). Nhanh hơn nhiều so với autocommit từng câu lệnh.

Khi nào nên bỏ qua việc tạo SQL

Nếu tệp của bạn có hơn ~50.000 dòng, các bộ loader hàng loạt gốc (COPY trong Postgres, LOAD DATA INFILE trong MySQL, bcp trong SQL Server) nhanh hơn INSERT viết bằng kịch bản cả một bậc độ lớn. Công cụ này dành cho việc nhập nhanh, gieo dữ liệu kiểm thử và di chuyển một lần.

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

Không. Nó chỉ xuất câu lệnh INSERT. Hãy tự định nghĩa schema bằng CREATE TABLE từ trước, như vậy bạn giữ quyền kiểm soát kiểu cột, độ dài và ràng buộc thay vì để bộ chuyển đoán.

Với một thay đổi: thay dấu backtick quanh tên bảng và tên cột bằng dấu nháy kép. Giá trị đặt trong dấu nháy đơn và sẽ chạy nguyên bản trên bất kỳ phương ngữ SQL-92 nào.

Dấu nháy đơn bên trong giá trị được nhân đôi (O''Brien), đây là cách escape chuẩn của SQL. Dấu gạch chéo ngược, dấu phần trăm và dấu gạch dưới được giữ nguyên, chúng chỉ trở nên đặc biệt trong mẫu LIKE.

Có. CSV được gửi đến máy chủ của chúng tôi để tạo SQL. Dữ liệu không được lưu trữ và không được thêm vào liên kết trang.

Công cụ liên quan