Я импортирую текстовый файл с разделителями табуляции в SQL Server 2012 через BCP. Он работает, за исключением последней строки файла, которая не импортируется. Это не обычная неожиданная проблема EOF, когда разделители установлены неправильно или в данных существует запятая с использованием разделителя-запятой. Разделитель полей явно установлен на \t
, а разделитель строк явно установлен на \n
. При проверке последней строки в Notepad ++ она правильно содержит данные и символы табуляции. Однако он не имеет разделителя конца строки. Вместо этого файл просто останавливается с последним символом табуляции (последнее поле строки равно нулю). Что, насколько мне известно, нормально.
Странная часть заключается в том, что если я добавлю разделитель конца строки в конец файла, последняя строка импортируется правильно. Единственная необычная вещь в последней строке заключается в том, что данные для первого поля содержат обратную кавычку перед фактическими символьными данными. Но обратные кавычки не используются в качестве разделителей, так что это вряд ли будет проблемой, тем более что строка импортируется, когда я добавляю «дополнительный» разделитель в конце строки.
Итак, должен ли текстовый файл с разделителями всегда иметь разделитель конца строки в конце данных? Или здесь что-то еще происходит?
Анонимный код BCP:
bcp DATABASENAME.dbo.tablename in "L:\directoryname\filename.txt" -c -S servername -U username -P passwordtext -F 2 -t \t -r \n