2011-09-22 40 views
13

Tôi nhận được lỗi nàyBulk tải lỗi chuyển đổi dữ liệu (cắt ngắn)

Bulk load data conversion error (truncation) for row 1, column 12 (is_download) 

đây là csv ... nó chỉ có một hàng

30,Bill,Worthy,sales,,709888499,[email protected],,"Im a a people person., to work together for this new emerging env.HTTP://applesoftware.com","Bill and Son of Co","Contact Us: Contact Form",0 

đây là tuyên bố chèn hàng loạt của mình .. .

SE SalesLogix 
GO 

CREATE TABLE CSVTemp 
(id INT, 
firstname VARCHAR(255), 
lastname VARCHAR(255), 
department VARCHAR(255), 
architecture VARCHAR(255), 
phone VARCHAR(255), 
email VARCHAR(255), 
download VARCHAR(255), 
comments VARCHAR(MAX), 
company VARCHAR(255), 
location VARCHAR(255), 
is_download VARCHAR(255) 
) 
GO 

BULK 
INSERT CSVTemp 
FROM 'c:\leads\leads.csv' 
WITH 
(
DATAFILETYPE = 'char', 
BATCHSIZE = 50, 
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n' 
) 
GO 
--Check the content of the table. 
SELECT * 
FROM CSVTemp 
GO 

Vấn đề là phần lớn thời gian hoạt động tốt nhưng trong một số trường hợp (đây là một trong số đó) tôi gặp lỗi

BẤT K ideas ý tưởng về nguyên nhân khiến hồ sơ này gặp phải lỗi này

Trả lời

12

Nó chọn dấu phẩy trong trường nhận xét làm dấu phân tách vì dấu phân cách không nhất quán. Giải pháp tốt nhất là để đảm bảo rằng tất cả các trường được bao bọc với dấu ngoặc kép và đặt FIELDTERMINATOR thành '","'. Cách khác, thay thế dấu phẩy bằng một số thứ không có trong nhận xét (như ~) và đặt FIELDTERMINATOR = '~'.

+0

nhờ @wil đã giúp rất nhiều – Trace

6

Ngoài nhận xét của Wil, có vẻ như nó đang nhìn thấy tất cả 12 cột, do đó, nó có thể chỉ là hàng của bạn là không chính xác. Trước tiên, hãy chắc chắn rằng chương trình đặt các tệp này lại với nhau thực ra là đặt một dấu xuống dòng ở cuối dòng cuối cùng; Tôi đã phải sửa chữa nhiều chương trình mà đây không phải là trường hợp. Một khi bạn chắc chắn có một vận chuyển trở lại đó, bạn có thể phải thử nghiệm để xem những gì loại vận chuyển trở lại nó được. Đôi khi nó là char (10) chỉ, đôi khi char (13) chỉ, và đôi khi nó có thể có cả hai nhưng theo thứ tự sai. Vì vậy, thử nghiệm với:

ROWTERMINATOR = '\n' 
ROWTERMINATOR = '\r' 
ROWTERMINATOR = '\n\r' 
ROWTERMINATOR = '\r\n' 
+0

Thông thường nếu rowterminator là không chính xác hoặc không phù hợp nó có thể gây ra nó để kết hợp các hàng cho đến khi nó chạm terminator công nhận hoặc thậm chí eof. Tôi đã từng xảy ra điều đó trước đó. – Wil

0

System.Data.SqlClient.SqlException (0x80131904): tải hàng loạt lỗi chuyển đổi dữ liệu (cắt ngắn) cho hàng 97, cột 33

Đối với các lỗi trên, bạn có thể kiểm tra

  • Data type kích thước của cột (ví dụ VARCHAR (255)) là nếu nó là đủ để nhập dữ liệu hay không.
  • terminator hàng ví dụ:
    • ROWTERMINATOR = '0x0A'
    • ROWTERMINATOR = '\ n'
    • ROWTERMINATOR = '\ r \ n'
  • FIELDTERMINATOR
    • Hãy chắc chắn rằng lĩnh vực terminator chọn không xảy ra với dữ liệu. Nếu có cơ hội, hãy thay thế bằng một số ký tự khác, ví dụ: | Trong tập tin.
Các vấn đề liên quan