Почему я получаю "синтаксический анализ XML: строка 2, символ 0, неправильный синтаксис документа" при массовой вставке в MS SQL Server

Я делаю массовую вставку в таблицу, используя файл формата FMT, но я получаю следующую ошибку:

XML parsing: line 2, character 0, incorrect document syntax

вот мой код

BULK INSERT [DM_Flux].[dbo].[Stage] FROM 'C:tempdata.dat'
WITH (FORMATFILE = 'C:tempFormatBcp.fmt')

вот formatfile (файл стандартного формата, а не XML):

10.0
5
1   SQLCHAR 0   2   ""  1   Id  ""
2   SQLCHAR 0   40  ""  2   Name    ""
3   SQLCHAR 0   50  ""  3   Street  ""
4   SQLCHAR 0   8   ""  4   StreetNo    ""
5   SQLCHAR 0   300 "rn"  7   BulkData    ""

почему я получаю ошибку XML с этим?

3 ответов


также еще один момент на случай, если кто-то еще столкнется с этим...

Если вы уверены, что файл ANSI, но все еще получаете эту ошибку, проверьте первую строку файла формата (номер версии). Номер версии должен соответствовать номеру версии SQL (или быть более старым номером версии).

MSDN reference:

версия утилиты bcp (Bcp.exe) используется для чтения файла формата должен быть таким же, как, или более поздней версии, чем был использован для создания файла формата. Например, SQL Server 2008 bcp может считывать файл формата Версии 9.0, созданный SQL Server 2005 bcp, но SQL Server 2005 bcp не может считывать файл формата версии 10.0, созданный SQL Server 2008 BCP.


хороший способ убедиться ,что MS SQL server не не удается прочитать формат версии, понизить номер версии в.Файл FMT. Изменить V10.От 0 до 9,0 или ниже. MS SQL 2008 может читать более низкую версию, но 2005 не может читать более высокую версию. Таким образом, понижение версии numer может помочь решить проблему.

номер версии утилиты bcp:

 9.0 = SQL Server 2005 
10.0 = SQL Server 2008
11.0 = SQL Server 2012
12.0 = SQL Server 2014

для файла формата не XML можно обратиться к странице Microsoft: http://msdn.microsoft.com/en-us/library/ms191479.aspx.


Если файл формата закодирован как Unicode, массовая вставка автоматически подумает, что это XML-файл, и будет рассматривать его как таковой. Убедитесь, что файл закодирован как ANSI и вы должны быть хорошо.