Pourquoi dois-je obtenir « l'analyse syntaxique XML: ligne 2, le caractère 0, la syntaxe de document incorrect » lorsque Bulk insertion, dans MS SQL Server

StackOverflow https://stackoverflow.com/questions/2154635

  •  23-09-2019
  •  | 
  •  

Question

Je fais un BULK INSERT dans une table à l'aide d'un fichier de format FMT, mais je reçois l'erreur suivante:

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

Voici mon code

BULK INSERT [DM_Flux].[dbo].[Stage] FROM 'C:\temp\data.dat'
WITH (FORMATFILE = 'C:\temp\FormatBcp.fmt')

Voici le FORMATFILE (fichier de format standard, pas 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 "\r\n"  7   BulkData    ""

Pourquoi est-ce que je reçois une erreur XML avec ceci?

Était-ce utile?

La solution 3

Si le fichier de format est codé en Unicode l'insert en vrac pensera automatiquement est un fichier XML et le traiter comme tel. Assurez-vous que le fichier est codé comme ANSI et vous devriez être bien.

Autres conseils

En outre un autre point au cas où quelqu'un d'autre va dans ce ...

Si vous êtes sûr que le fichier est ANSI mais toujours obtenir cette erreur vérifier la première ligne du fichier de format (le numéro de version). Le numéro de version doit correspondre à votre numéro de version SQL (ou être un numéro de version plus ancienne).

référence MSDN :

  

La version de l'utilitaire bcp (Bcp.exe) utilisé pour lire un fichier de format doit être identique, ou une version plus récente que a été utilisé pour créer le fichier de format. Par exemple, SQL Server 2008 bcp peut lire une version format de fichier 9.0, qui est généré par bcp SQL Server 2005, SQL Server 2005 mais bcp ne peut pas lire un fichier de format version 10.0, qui est généré par SQL Server 2008 bcp.

Une bonne façon de faire en sorte que le serveur MS SQL ne parvient pas à lire le format de version, déclasser le numéro de version dans le fichier .FMT. Changer V10.0 à 9,0 ou moins. MS SQL 2008 peut lire une version inférieure, mais 2005 ne peut pas lire une version supérieure. déclasser Ainsi, le numér version peut aider à résoudre le problème.

Le numéro de version de l'utilitaire bcp:

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

Pour le fichier de format non XML vous pouvez vous référer à la page Microsoft: http: //msdn.microsoft.com/en-us/library/ms191479.aspx .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top