Ошибка преобразования данных массовой загрузки (усечение)

Я получаю эту ошибку

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

вот csv...он имеет только одну строку

30,Bill,Worthy,sales,,709888499,bat@bat.com,,"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

вот мой оператор bulk insert...

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:leadsleads.csv'
WITH
(
DATAFILETYPE = 'char', 
BATCHSIZE = 50, 
FIELDTERMINATOR = ',', 
ROWTERMINATOR = 'n' 
)
GO
--Check the content of the table.
SELECT *
FROM CSVTemp
GO

проблема в большинстве случаев работает отлично, но в некоторых ситуациях (это один из них) я получаю ошибки

любые идеи о том, что вызывает эту запись, чтобы эта ошибка

3 ответов


он собирает запятые в поле комментариев в качестве разделителей, потому что разделители не согласованы. Лучшее решение-обеспечить, чтобы все поля были обернуты двойными кавычками и установлены FIELDTERMINATOR до '","'. В качестве альтернативы замените запятые чем-то маловероятным в комментариях (например,~) и установить FIELDTERMINATOR = '~'.


в дополнение к комментариям Вила, кажется, что он видит все 12 столбцов, поэтому может быть, что ваш rowterminator неверен. Во-первых, убедитесь, что программа, которая объединяет эти файлы, фактически помещает возврат каретки в конце последней строки; мне пришлось исправить многие программы, где это было не так. Как только вы убедитесь, что там есть возврат каретки, вам, возможно, придется поэкспериментировать, чтобы увидеть, какой тип возврата каретки. Иногда это только char (10), иногда тип char(13), а иногда он может иметь оба, но в неправильном порядке. Поэтому экспериментируйте с:

ROWTERMINATOR = '\n'
ROWTERMINATOR = '\r'
ROWTERMINATOR = '\n\r'
ROWTERMINATOR = '\r\n'