Chuyển đến nội dung

Chuyển CSV sang SQL Server

Thả tệp CSV để nhận tập lệnh SQL Server với câu lệnh CREATE TABLE và INSERT. Mỗi cột được gán kiểu, và mọi bản sửa đều được liệt kê kèm hàng và cột.

Tệp của bạn
csvventas_2024.csvTệp mẫu, 357 B
Cơ sở dữ liệu của bạn

Đã chuyển đổi 5 hàng, 8 bản sửa, không hàng nào bị từ chối

Hiển thị
Những hàng đầu tiên của ventas_2024.csv, mỗi bản sửa đều được đánh dấu
Hàng
500412Peña MuñozMérida15/02/20241.234,50sí
600413José Ángel RuizLeón03/02/202499,90no
700414Zoë OrtízQuerétaro29/02/2024N/Así
800415Ñuño CastañedaOaxaca28/02/20247,25no
900416Iñaki OlaizolaMazatlán11/03/2024980,75sí
-- Written by IntoSQL for SQL Server.

SET NOCOUNT ON;
BEGIN TRANSACTION;

CREATE TABLE ventas_2024 (
    folio nvarchar(8) NOT NULL,
    cliente nvarchar(16) NOT NULL,
    ciudad nvarchar(16) NOT NULL,
    fecha date NOT NULL,
    importe decimal(6,2),
    pagado bit NOT NULL
);

INSERT INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES
(N'00412', N'Peña Muñoz', N'Mérida', '2024-02-15', 1234.50, 1),
(N'00413', N'José Ángel Ruiz', N'León', '2024-02-03', 99.90, 0),
(N'00414', N'Zoë Ortíz', N'Querétaro', '2024-02-29', NULL, 1),
(N'00415', N'Ñuño Castañeda', N'Oaxaca', '2024-02-28', 7.25, 0),
(N'00416', N'Iñaki Olaizola', N'Mazatlán', '2024-03-11', 980.75, 1);

COMMIT TRANSACTION;

Bản sửa

  1. Tệp được ghi bằng windows‑1252; tệp đã được chuyển sang UTF-8.
  2. Tiêu đề nằm ở dòng 4; các dòng phía trên đã bị bỏ qua.
  3. Dòng 10 ("TOTAL") là dòng tổng, nên đã bị bỏ qua.
  4. Giữ số 0 ở đầu trong "Folio": 00412 vẫn là 00412, lưu dưới dạng văn bản.
  5. 15/02/2024 chứng minh ngày trong "Fecha" ghi ngày trước tháng, nên 03/02/2024 được đọc là 2024‑02‑03.
  6. Số trong "Importe" dùng dấu phẩy thập phân: 1.234,50 được đọc là 1234.50.
  7. N/A trong "Importe" được đọc là trống (1 trên 5 giá trị).
  8. "Pagado" chứa các từ có và không (sí, no), lưu dưới dạng boolean.

Tệp được chuyển đổi ngay trên máy tính này và không bao giờ được tải lên.

Mẫu khác:

Từ CSV sang SQL Server, từng cột một

Tệp mẫu ở trên, ventas_2024.csv, khi IntoSQL viết cho SQL Server: mỗi cột chứa gì trong tệp, kiểu dữ liệu nhận được và giá trị đầu tiên xuất hiện thế nào trong tập lệnh.

Trong tệpGiá trị đầu tiênCộtKiểu SQL ServerTrong tập lệnh
Folio00412folionvarchar(8)N'00412'
ClientePeña Muñozclientenvarchar(16)N'Peña Muñoz'
CiudadMéridaciudadnvarchar(16)N'Mérida'
Fecha15/02/2024fechadate'2024-02-15'
Importe1.234,50importedecimal(6,2)1234.50
Pagadosípagadobit1

Nạp tập lệnh vào SQL Server

Tệp tải xuống là một tệp .sql thông thường. Chạy nó bằng công cụ riêng của SQL Server.

Từ terminal

sqlcmd -S localhost -d mydb -f 65001 -i ventas_2024.sql_server.sql

-f 65001 đọc tệp dưới dạng UTF-8, nên dấu và ñ được nạp đúng như đã viết.

Từ công cụ cơ sở dữ liệu

Trong SQL Server Management Studio hoặc Azure Data Studio, mở tệp và chọn Execute.

Những điều cần biết về tệp CSV và SQL Server

IntoSQL đọc gì trong tệp CSV

  • Bảng mã được nhận diện, kể cả Windows-1252 và UTF-16, nên dấu và ký tự ñ được giữ nguyên.
  • Dấu phân cách được nhận diện: dấu phẩy, dấu chấm phẩy, tab hoặc thanh dọc. Với dấu chấm phẩy, dấu phẩy thập phân như 1.234,50 được đọc là số.
  • Giá trị trong dấu ngoặc kép có thể chứa dấu phân cách và xuống dòng.

Những điều cần biết về SQL Server

  • Văn bản là nvarchar với giá trị N'...', nên dấu được giữ nguyên; văn bản trên 4000 ký tự trở thành nvarchar(max).
  • Giá trị có và không trở thành bit, và ngày có độ lệch múi giờ trở thành datetimeoffset.
  • Giá trị dài được ghi thành nhiều phần, nên sqlcmd và SQL Server Management Studio chấp nhận tập lệnh.

Cách mỗi loại giá trị được lưu trong SQL Server

Giá trịSQL Server
Có và khôngbit
Số nguyênint
Số nguyên lớnbigint
Số thập phândecimal(p,s)
Số dấu phẩy độngfloat
Ngàydate
Giờ trong ngàytime
Ngày kèm giờdatetime2
Ngày kèm giờ và độ lệch múi giờdatetimeoffset
Văn bảnnvarchar(n)nvarchar(max)

Câu hỏi về CSV sang SQL Server

Chưa có câu trả lời ở đây? Hãy viết cho chúng tôi từ trang liên hệ, sẽ có người trả lời. Trang liên hệ

Làm sao để chuyển CSV sang SQL Server?

Thả tệp vào trình chuyển đổi ở đầu trang này. Nó tìm tiêu đề, đọc mọi giá trị và viết tập lệnh SQL Server, kèm danh sách từng bản sửa. Tải tập lệnh xuống và chạy bằng sqlcmd.

Nếu CSV của tôi dùng dấu chấm phẩy hoặc tab thì sao?

Dấu phân cách được tự nhận diện: dấu phẩy, dấu chấm phẩy, tab hoặc thanh dọc. Bạn cũng có thể đặt nó trong Tùy chọn khác. Với dấu chấm phẩy, số thập phân dùng dấu phẩy như 1.234,50 được đọc là số.

Nó dùng những kiểu SQL Server nào?

Giá trị có/không thành bit, số nguyên thành int, số thập phân thành decimal(p,s), ngày thành date, ngày kèm giờ thành datetime2 và văn bản thành nvarchar(n). Kích thước lấy theo giá trị dài nhất trong mỗi cột.

Số 0 ở đầu có được giữ trong SQL Server không?

Có. Một mã như 00412 vẫn là văn bản, nên SQL Server lưu nó dưới dạng nvarchar(8) và tập lệnh viết nó là N'00412'.

Có thể nạp dữ liệu vào SQL Server mà không cần tập lệnh không?

Không. Hãy tải tập lệnh xuống và chạy bằng sqlcmd. Nạp không cần tập lệnh hoạt động với PostgreSQL, MySQL, MariaDB và SQLite, từ ứng dụng máy tính hoặc dòng lệnh.

Tệp CSV có thể lớn đến đâu?

Trình duyệt đọc CSV theo luồng, nên tệp vài gigabyte vẫn chạy được. Trên laptop Apple M4, dòng lệnh chuyển đổi CSV 174 MB với một triệu hàng trong chưa đầy một giây.