Ответ 1
Я получил извлечение из Oracle/Unix. Я заменил \r\n
на ROWTERMINATOR = '0x0a'
, и это сработало для меня.
Большое спасибо!
Я пытаюсь запустить следующую команду для массовой вставки данных из файла CSV -
BULK INSERT TestDB.dbo.patent
FROM 'C:\1patents.csv'
WITH (FIRSTROW = 1, FIELDTERMINATOR = '^', ROWTERMINATOR='\n');
Ошибка, которую я получаю, - это
Msg 4866, уровень 16, состояние 1, строка 1
Сбой массовой загрузки невозможен. Столбец слишком длинный в файле данных для строки 1, столбец 6.
Убедитесь, что терминатор поля и ограничитель строк указаны правильно. Msg 7399, уровень 16, состояние 1, строка 1
Поставщик OLE DB "BULK" для связанного сервера "(null)" сообщил об ошибке. Поставщик не предоставил никакой информации об ошибке.
Msg 7330, уровень 16, состояние 2, строка 1
Не удается получить строку из поставщика OLE DB "BULK" для связанного сервера "(null)".
Теперь это данные в первой строке -
00000001^^18360713^295^4^0
И в таблице последнее поле (соответствует 6-му столбцу данных выше = 0) имеет тип "int".
Что я здесь делаю неправильно? Почему я получаю вышеуказанную ошибку?
Я получил извлечение из Oracle/Unix. Я заменил \r\n
на ROWTERMINATOR = '0x0a'
, и это сработало для меня.
Большое спасибо!
Как и выше, у меня была та же проблема с импортом файла csv в SQL Server. Я использовал ROWTERMINATOR = '\n'
, и я также попытался использовать '\r\n'
и '\r'
. Ни один из них не работал.
Но при использовании ROWTERMINATOR = '0x0a'
таблица загружается без проблем.
Я не знаю, почему? за этим, надеюсь, кто-то еще может пролить свет на него.
Если источником файла является Unix, скорее всего, терминатор строки строки действительно
\ г\п
Либо используйте шестнадцатеричный редактор для проверки терминатора файлов, либо просто попробуйте его в качестве ограничителя строк.
Я столкнулся с подобной проблемой и узнал, что если файл не является типом UNIX \r\n, это нормально.
Когда вы создаете файл формата (.fmt или .xml), обратите внимание на третий столбец слева. его называют минимальной длиной столбца. Время от времени сервер sql по умолчанию имеет значение 2, хотя вы не упоминаете его в create script. Измените это значение на 0. Иногда вам может потребоваться также разрешить NULL, поэтому измените это значение на ноль и оно должно работать сейчас