Pages

June 28, 2012

Lỗi khi import dữ liệu từ Excel sang SQL Server

Hôm rồi dự án cần import dữ liệu từ excel sang SQL Server nhưng gặp lỗi khi cố import cột dữ liệu kiểu nvarchar.
There was an error with output column "XYZ" (30) on output "Excel Source Output" (9). The column status returned was: "Text was truncated or one or more characters had no match in the target code page.".
 (SQL Server Import and Export Wizard)

Đã thử tick tùy chọn Ignore Error với vì tưởng là nó sẽ bỏ qua lỗi này khi convert. BS thay nó vẫn cứ trơ gan cùng tuế nguyệt. Biện pháp bất đắc dĩ là ignore column này luôn, nhưng cũng vẫn không được. Làm mình mất toi buổi tối chỉ để ngồi ăn chè và cháo đậu xanh.

Nhờ Gu gồ chỉ điểm, biết được là do cơ chế đọc nguồn từ excel để lấy kiểu dữ liệu. Vấn đề là Import Wizard thực hiện kiểm tra theo cơ chế sampling: quyết định maxlengh cho cột dữ liệu cần import dựa vào dòng có maxlength lớn nhất trong  8 dòng đầu của excel source. Do đó những thằng sau nếu dài hơn là đi cu tèo.

Vậy trick ở đây là nhập dummy data ở dòng đầu tiên sao cho thỏa mãn data type maxlength ở sql source.
Sau khi import xong thì xóa đi hoặc trả lại dữ liệu ban đầu cho nó.

Tạm thời thủ công vậy. Có cách khác "tự động hóa" một chút nhưng chưa kiểm tra được độ tin cậy.

Tham khảo issue được thảo luận ở đây


No comments:

Post a Comment