12

FMT形式のファイルを使用してテーブルにBULKINSERTを実行していますが、次のエラーが発生します。

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

これが私のコードです

BULK INSERT [DM_Flux].[dbo].[Stage] FROM 'C:\temp\data.dat'
WITH (FORMATFILE = 'C:\temp\FormatBcp.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 "\r\n"  7   BulkData    ""

これでXMLエラーが発生するのはなぜですか?

4

3 に答える 3

13

また、誰かがこれに遭遇した場合に備えて別のポイント...

ファイルがANSIであることを確認してもこのエラーが発生する場合は、フォーマットファイルの最初の行(バージョン番号)を確認してください。バージョン番号は、SQLバージョン番号と一致する必要があります(または古いバージョン番号である必要があります)。

MSDNリファレンス

フォーマットファイルの読み取りに使用されるbcpユーティリティ(Bcp.exe)のバージョンは、フォーマットファイルの作成に使用されたものと同じかそれ以降のバージョンである必要があります。たとえば、SQL Server 2008 bcpは、SQL Server 2005 bcpによって生成されたバージョン9.0形式のファイルを読み取ることができますが、SQL Server 2005 bcpは、SQL Server2008bcpによって生成されたバージョン10.0形式のファイルを読み取ることはできません。

于 2010-02-22T19:29:43.960 に答える
8

MS SQLサーバーがバージョン形式の読み取りに失敗していないことを確認する良い方法は、.FMTファイルのバージョン番号をダウングレードすることです。V10.0を9.0以下に変更します。MS SQL 2008は下位バージョンを読み取ることができますが、2005は上位バージョンを読み取ることができません。したがって、バージョン番号をダウングレードすると、問題の解決に役立つ場合があります。

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 )を参照してください。

于 2012-07-17T09:29:37.490 に答える
5

フォーマットファイルがUnicodeとしてエンコードされている場合、一括挿入は自動的にXMLファイルであると見なし、そのように扱います。ファイルがANSIとしてエンコードされていることを確認してください。問題がないはずです。

于 2010-01-28T13:04:13.680 に答える