Chuyển dữ liệu từ Excel sang cơ sở dữ liệu an toàn gồm ba chặng: dọn bảng nguồn cho đúng dạng một dòng một bản ghi, xuất ra tệp CSV mã hoá UTF-8 với kiểu dữ liệu đã thống nhất, rồi nhập theo đúng thứ tự khoá ngoại và đối chiếu số dòng, tổng tiền trước khi dừng dùng tệp cũ. Phần lớn sự cố không nằm ở lệnh nhập mà ở những chi tiết như số 0 đầu bị mất, ngày tháng đảo ngược, chữ tiếng Việt vỡ.
Bài này đi qua từng chặng với ví dụ giả định của một xưởng in nhỏ ở Bắc Ninh chuyển bảng khách hàng, đơn in và chi tiết đơn từ Excel sang một cơ sở dữ liệu. Cách làm áp dụng được dù đích đến là SQLite trên máy, một cơ sở dữ liệu trực tuyến hay chức năng nhập của phần mềm quản lý — chỉ khác ở nút bấm.
Dọn bảng nguồn trước khi xuất
Bảng tính làm cho người đọc thường có nhiều thứ cơ sở dữ liệu không hiểu được. Trước khi xuất, làm trên bản sao và dọn những điểm dưới đây.
- Một trang tính một bảng, một dòng tiêu đề: bỏ các dòng tiêu đề trang trí phía trên, tiêu đề hai tầng, dòng tổng cộng ở cuối, dòng trống ngăn giữa các tháng.
- Bỏ ô gộp: ô gộp chỉ giữ giá trị ở ô đầu, các dòng còn lại sẽ thành trống khi xuất. Bỏ gộp rồi điền giá trị xuống cho từng dòng.
- Màu không mang nghĩa: nếu ô tô vàng nghĩa là chưa thanh toán, tạo cột trạng thái thanh toán và ghi rõ giá trị. Màu không đi theo dữ liệu khi xuất.
- Ghi chú trong ô số: ô số tiền ghi "1.200.000 (đã cọc 500k)" phải tách phần ghi chú sang cột riêng, giữ ô số chỉ chứa số.
- Công thức thành giá trị: cột tính bằng công thức thì sao chép, dán dạng giá trị, hoặc quyết định không chuyển mà để cơ sở dữ liệu tự tính lại.
- Tên cột kỹ thuật và mã có sẵn: đổi tiêu đề sang chữ thường không dấu theo từ điển dữ liệu; mỗi bảng có cột mã không trùng trước khi xuất.
Các việc làm sạch nội dung như gộp khách trùng, chuẩn hoá họ tên, sửa địa chỉ theo tỉnh mới nên xong trước chặng này; hướng dẫn chi tiết có ở danh mục làm sạch dữ liệu của trang. Chuyển dữ liệu bẩn vào cơ sở dữ liệu chỉ làm cái bẩn khó sửa hơn.
Bẫy kiểu dữ liệu hay gặp và cách xử lý
Bảng tính đoán kiểu dữ liệu cho từng ô; cơ sở dữ liệu bắt bạn khai báo kiểu cho cả cột. Những chỗ hai bên hiểu khác nhau là nơi dữ liệu hỏng âm thầm.
| Loại dữ liệu | Bẫy hay gặp | Cách xử lý |
|---|---|---|
| Mã, số điện thoại, mã bưu chính | Bị coi là số, mất số 0 đầu; mã dài bị đổi sang dạng khoa học kiểu 1,23E+12 | Định dạng cột là Văn bản trước khi xuất; khai báo kiểu chữ trong cơ sở dữ liệu |
| Ngày tháng | Ngày 03/04 bị hiểu là 4 tháng 3 hay 3 tháng 4 tuỳ cài đặt vùng; ngày lưu dạng chữ lẫn dạng ngày | Đổi sang dạng năm-tháng-ngày (YYYY-MM-DD) trước khi xuất; kiểm ngày nhỏ nhất, lớn nhất |
| Số tiền | Dấu chấm phân cách nghìn kiểu Việt (1.250.000) bị hiểu là số thập phân; đơn vị nghìn đồng lẫn đồng | Xuất số trần không dấu phân cách; ghi rõ đơn vị trong tên cột |
| Chữ tiếng Việt | Tệp CSV không phải UTF-8 làm chữ có dấu thành ký tự lạ; hai cách mã hoá dấu (dựng sẵn và tổ hợp) làm tìm "Hoà" không ra | Xuất CSV UTF-8; chuẩn hoá về dạng dựng sẵn (NFC) trước khi nhập |
| Có/không | Lẫn lộn Có, có, x, 1, TRUE, ô trống | Thống nhất về một cặp giá trị và khai báo trong từ điển |
| Ô trống | Không rõ trống là không có hay là chưa biết; ô chứa dấu cách trông như trống | Quy định nghĩa của ô trống; xoá khoảng trắng thừa trước khi xuất |
Chuyện hai cách mã hoá dấu tiếng Việt ít người để ý nhưng gây lỗi rất khó hiểu: hai chữ "Hoà" trông giống hệt nhau trên màn hình mà máy coi là khác nhau, vì một bên lưu chữ "à" thành một ký tự, bên kia lưu chữ "a" cộng một dấu huyền rời. Văn bản dán từ nhiều nguồn (tin nhắn, PDF, phần mềm cũ) hay trộn hai dạng này.
Xuất CSV đúng cách
CSV là định dạng trung gian đơn giản nhất mà gần như mọi cơ sở dữ liệu và phần mềm đều nhập được. Đơn giản nên cũng dễ sai ở những chi tiết nhỏ.
- Mỗi bảng xuất thành một tệp riêng, tên tệp trùng tên bảng: khach_hang.csv, don_in.csv, chi_tiet_don.csv.
- Trong Excel, chọn lưu dưới dạng CSV UTF-8 (tuỳ chọn này có ở các bản Excel mới; bản cũ chỉ có CSV thường, dễ làm hỏng chữ tiếng Việt). Google Sheets tải xuống CSV mặc định là UTF-8.
- Kiểm ký tự phân cách: máy cài vùng Việt Nam có thể xuất CSV dùng dấu chấm phẩy thay dấu phẩy. Cả hai đều nhập được nếu bạn khai đúng lúc nhập.
- Mở tệp CSV bằng trình soạn thảo văn bản thuần (không mở lại bằng Excel, vì Excel sẽ đoán kiểu lần nữa) và xem mười dòng đầu: số 0 đầu còn không, ngày đúng dạng chưa, chữ có dấu đọc được không.
- Đếm số dòng của tệp (trừ dòng tiêu đề) và ghi lại cạnh số dòng của trang tính nguồn. Con số này dùng ở bước đối chiếu cuối.
Ô có chứa dấu phẩy hoặc xuống dòng, như địa chỉ hay ghi chú dài, sẽ được bao trong dấu ngoặc kép khi xuất. Nếu phần mềm nhập báo số cột không đều ở một dòng nào đó, thường là do một ô như vậy bị xử lý sai.
Nhập theo đúng thứ tự và dùng bảng tạm
Thứ tự nhập đi theo chiều khoá ngoại: bảng danh mục trước (nhóm sản phẩm, đơn vị tính, tỉnh thành), rồi bảng cha (khách hàng, sản phẩm), rồi bảng con (đơn in), cuối cùng là bảng cháu (chi tiết đơn). Nếu nhập đơn trước khách, cơ sở dữ liệu có khai báo khoá ngoại sẽ từ chối mọi đơn trỏ tới mã khách chưa tồn tại.
Khi lệnh nhập báo lỗi khoá ngoại, đừng vội tắt ràng buộc cho xong. Lỗi đó là tin tốt: nó chỉ ra những đơn trỏ tới khách không có trong bảng khách — dòng mồ côi đã nằm im trong bảng tính nhiều năm mà không ai biết. Lập danh sách các dòng đó, tìm ra khách đúng hoặc gán vào mã khách vãng lai có ghi chú, rồi nhập lại.
Cách làm an toàn cho người không chuyên là dùng bảng tạm. Bước một: nhập tệp CSV vào một bảng tạm mà mọi cột đều là kiểu chữ, không ràng buộc gì, nên lệnh nhập gần như không thể thất bại. Bước hai: viết câu truy vấn chọn từ bảng tạm, đổi kiểu từng cột, chèn vào bảng thật. Những dòng không đổi kiểu được, như ngày sai dạng hay số có chữ, lộ ra ở bước hai, nơi bạn xem được từng dòng thay vì một thông báo lỗi chung chung. Bảng tạm xoá đi sau khi đối chiếu xong.
Nhờ AI viết lệnh tạo bảng và kịch bản kiểm
Viết lệnh tạo bảng có đủ kiểu dữ liệu và khoá ngoại là việc AI làm nhanh và khá chuẩn, miễn là bạn đưa mô tả đủ. Dữ liệu thật không cần cho bước này.
- Đưa cho AI từ điển dữ liệu (tên cột, kiểu, bắt buộc, giá trị hợp lệ) và sơ đồ quan hệ dạng chữ của ba bảng, kèm tên hệ quản trị đích.
- Gửi câu lệnh mẫu: "Hệ quản trị: SQLite. Dựa trên từ điển dữ liệu dưới đây, viết lệnh tạo ba bảng khach_hang, don_in, chi_tiet_don với kiểu dữ liệu, khoá chính, khoá ngoại và ràng buộc không trống. Sau đó viết các câu truy vấn kiểm sau khi nhập: đếm số dòng từng bảng, đếm mã trùng, đếm dòng mồ côi theo từng khoá ngoại, đếm ô trống từng cột bắt buộc, tổng thành tiền, ngày nhỏ nhất và lớn nhất. Giải thích từng lệnh."
- Đọc lại kiểu dữ liệu AI chọn cho từng cột, nhất là mã và số điện thoại (phải là chữ), tiền (số nguyên nếu tính bằng đồng), ngày.
- Chạy lệnh tạo bảng trên một tệp cơ sở dữ liệu thử, nhập một phần nhỏ dữ liệu đã che thông tin cá nhân, chạy kịch bản kiểm. Chỉ khi chạy trơn mới làm với toàn bộ dữ liệu.
- Lưu lệnh tạo bảng và kịch bản kiểm cùng thư mục với từ điển dữ liệu để lần chuyển sau dùng lại.
Ở SQLite, ràng buộc khoá ngoại có thể chưa được bật mặc định trong một số công cụ; hỏi AI cách kiểm và bật cho đúng công cụ bạn dùng, rồi thử bằng cách cố ý chèn một dòng mồ côi xem có bị từ chối không.
Đối chiếu trước khi dừng dùng tệp cũ
Chuyển xong chưa phải là xong. Chỉ khi mọi phép đối chiếu dưới đây khớp mới nên thông báo cho cả nhóm dừng nhập vào bảng tính.
- Số dòng từng bảng trong cơ sở dữ liệu bằng số dòng đã ghi lại từ trang tính nguồn.
- Tổng các cột tiền khớp với tổng tính trong Excel trước khi xuất, đến từng đồng.
- Số mã khác nhau bằng số dòng (không trùng mã), và số dòng mồ côi bằng 0.
- Ngày nhỏ nhất, lớn nhất nằm trong khoảng hợp lý; một đơn năm 1900 hay năm 2062 là dấu hiệu ngày bị hiểu sai.
- Đọc tay mười bản ghi chọn ngẫu nhiên, so từng trường với tệp gốc, chú ý chữ có dấu và số 0 đầu.
- Tìm thử vài tên có dấu như Hoà, Thuỷ, Nguyễn để chắc tìm kiếm ra kết quả.
Giữ tệp Excel gốc ở chế độ chỉ đọc, ghi một dòng nhật ký: ngày chuyển, người làm, số dòng từng bảng, kết quả đối chiếu. Khi dữ liệu đã nằm yên trong cơ sở dữ liệu và bạn muốn bắt đầu đọc số liệu để ra quyết định, phần đó có hướng dẫn ở trang AI Phân Tích.
Câu hỏi thường gặp
Có nên nhờ AI chuyển đổi cả tệp dữ liệu sang định dạng mới không?
Không nên dán dữ liệu thật vào chatbot để chuyển định dạng. Ngoài rủi ro lộ thông tin khách hàng, AI có thể cắt bớt hoặc đổi số khi dữ liệu dài. Nhờ AI viết lệnh và công thức, còn việc chuyển chạy trên máy của bạn.
Excel không có tuỳ chọn CSV UTF-8 thì làm sao?
Có thể tải tệp lên Google Sheets rồi tải xuống dạng CSV, vốn mặc định UTF-8, hoặc mở tệp CSV thường bằng một trình soạn thảo văn bản hỗ trợ đổi mã hoá và lưu lại dạng UTF-8. Sau đó luôn mở ra kiểm chữ có dấu.
Dữ liệu nhiều năm có nên chuyển hết không?
Không bắt buộc. Nhiều nơi chỉ chuyển dữ liệu đang dùng và vài năm gần nhất, phần cũ hơn giữ ở tệp lưu trữ chỉ đọc. Quyết định dựa trên việc có cần tra cứu lịch sử thường xuyên không và yêu cầu lưu trữ chứng từ.
Nhập xong mới phát hiện sai kiểu một cột thì sửa thế nào?
Nếu còn trong giai đoạn thử, xoá bảng, sửa lệnh tạo bảng và nhập lại từ tệp CSV — đó là lý do giữ tệp CSV và kịch bản. Nếu đã dùng thật, cần sửa có kế hoạch, sao lưu trước, và nên có người hiểu kỹ thuật hỗ trợ.
Phần mềm quản lý có chức năng nhập Excel thì có cần các bước này không?
Vẫn cần phần dọn bảng nguồn, thống nhất kiểu dữ liệu và đối chiếu sau khi nhập. Chức năng nhập chỉ thay phần nút bấm; nó không biết ô tô vàng nghĩa là chưa thanh toán hay số 0 đầu của mã khách quan trọng.
Dữ liệu đang được nhập hằng ngày thì chuyển lúc nào?
Chọn một mốc rõ, thường là cuối ngày hoặc cuối tuần: khoá tệp cũ, xuất, nhập, đối chiếu, rồi mở hệ thống mới. Những giao dịch phát sinh trong lúc chuyển ghi tạm ra giấy hoặc một trang riêng và nhập bổ sung sau khi đối chiếu xong.