Chuyển đến nội dung

Chuyển CSV sang SQL

Thả tệp CSV và chọn cơ sở dữ liệu để nhận tập lệnh SQL 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 PostgreSQL.

SET client_encoding = 'UTF8';
BEGIN;

CREATE TABLE ventas_2024 (
    folio text NOT NULL,
    cliente text NOT NULL,
    ciudad text NOT NULL,
    fecha date NOT NULL,
    importe numeric(6,2),
    pagado boolean NOT NULL
);

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

COMMIT;

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:

Một tệp CSV, sáu cơ sở dữ liệu

Tệp mẫu ở trên, ventas_2024.csv, và kiểu dữ liệu mà mỗi cột nhận được trong từng cơ sở dữ liệu.

Trong tệpGiá trị đầu tiênPostgreSQLMySQLMariaDBSQLiteSQL ServerOracle
Folio00412textvarchar(8)varchar(8)TEXTnvarchar(8)VARCHAR2(8 CHAR)
ClientePeña Muñoztextvarchar(16)varchar(16)TEXTnvarchar(16)VARCHAR2(16 CHAR)
CiudadMéridatextvarchar(16)varchar(16)TEXTnvarchar(16)VARCHAR2(16 CHAR)
Fecha15/02/2024datedatedateDATEdateDATE
Importe1.234,50numeric(6,2)decimal(6,2)decimal(6,2)NUMERIC(6,2)decimal(6,2)NUMBER(6,2)
Pagadosíbooleantinyint(1)tinyint(1)BOOLEANbitNUMBER(1)

Nạp tập lệnh vào cơ sở dữ liệu của bạn

Tệp tải xuống là một tệp .sql thông thường. Mỗi cơ sở dữ liệu chạy nó bằng công cụ riêng.

  • PostgreSQL

    psql -v ON_ERROR_STOP=1 -d mydb -f ventas_2024.postgresql.sql

    ON_ERROR_STOP khiến psql dừng ở lỗi đầu tiên. Tập lệnh chạy trong một giao dịch, nên nếu nạp thất bại, cơ sở dữ liệu vẫn giữ nguyên.

  • MySQL

    mysql --default-character-set=utf8mb4 mydb < ventas_2024.mysql.sql

    Tập lệnh tự đặt utf8mb4; cờ này khiến client gửi theo cùng cách, nên dấu được giữ nguyên.

  • MariaDB

    mariadb --default-character-set=utf8mb4 mydb < ventas_2024.mariadb.sql

    Tập lệnh tự đặt utf8mb4; cờ này khiến client gửi theo cùng cách, nên dấu được giữ nguyên.

  • SQLite

    sqlite3 ventas_2024.db < ventas_2024.sqlite.sql

    Tệp cơ sở dữ liệu được tạo nếu chưa có. Trình chuyển đổi cũng tải xuống sẵn một cơ sở dữ liệu .sqlite, không cần lệnh nào.

  • SQL Server

    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.

  • Oracle

    sqlplus user@//localhost/mydb @ventas_2024.oracle.sql

    Tập lệnh tắt biến thay thế (SET DEFINE OFF), nên dấu & trong dữ liệu vẫn là dấu &.

Dòng lệnh nạp tệp thẳng vào cơ sở dữ liệu SQLite miễn phí. Với IntoSQL Pro, dòng lệnh và ứng dụng máy tính còn nạp vào PostgreSQL, MySQL và MariaDB. Với SQL Server và Oracle, hãy chạy tập lệnh.

Những điều cần biết về tệp CSV và từng cơ sở dữ liệu

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ề từng cơ sở dữ liệu

  • Chọn cơ sở dữ liệu sau khi mở tệp: mỗi cơ sở dữ liệu nhận các kiểu mà nó hỗ trợ.

Cách mỗi loại giá trị được lưu trong từng cơ sở dữ liệu

Giá trịPostgreSQLMySQLMariaDBSQLiteSQL ServerOracle
Có và khôngbooleantinyint(1)tinyint(1)BOOLEANbitNUMBER(1)
Số nguyênintegerintintINTEGERintNUMBER(10)
Số nguyên lớnbigintbigintbigintINTEGERbigintNUMBER(19)
Số thập phânnumeric(p,s)decimal(p,s)doubledecimal(p,s)doubleNUMERIC(p,s)TEXTdecimal(p,s)NUMBER(p,s)
Số dấu phẩy độngdouble precisiondoubledoubleREALfloatBINARY_DOUBLE
NgàydatedatedateDATEdateDATE
Giờ trong ngàytimetime(6)timetime(6)timeTIMEtimeINTERVAL DAY(0) TO SECOND
Ngày kèm giờtimestampdatetime(6)datetimedatetime(6)datetimeDATETIMEdatetime2TIMESTAMP
Ngày kèm giờ và độ lệch múi giờtimestamptzdatetime(6)datetimedatetime(6)datetimeDATETIMEdatetimeoffsetTIMESTAMP WITH TIME ZONE
Văn bảntextvarchar(n)textmediumtextlongtextvarchar(n)textmediumtextlongtextTEXTnvarchar(n)nvarchar(max)VARCHAR2(n CHAR)CLOB

Câu hỏi về CSV sang SQL

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?

Thả tệp vào trình chuyển đổi ở đầu trang này và chọn cơ sở dữ liệu: PostgreSQL, MySQL, MariaDB, SQLite, SQL Server hoặc Oracle. Mỗi cơ sở dữ liệu nhận các kiểu mà nó hỗ trợ. Tải tập lệnh xuống và chạy trong cơ sở dữ liệu.

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 nào trong từng cơ sở dữ liệu?

Mỗi cơ sở dữ liệu có kiểu riêng: giá trị có/không là boolean trong PostgreSQL, tinyint(1) trong MySQL và MariaDB, bit trong SQL Server và NUMBER(1) trong Oracle. Bảng trên trang này liệt kê mọi loại giá trị.

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

Có. Một mã như 00412 vẫn là văn bản trong mọi cơ sở dữ liệu, được viết là '00412', nên không mất số 0 nào.

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

Có. Dòng lệnh nạp vào SQLite miễn phí, và với IntoSQL Pro, ứng dụng máy tính và dòng lệnh nạp vào PostgreSQL, MySQL và MariaDB. Với SQL Server và Oracle, hãy chạy tập 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.