更新:我使用的是SQL Server 12.0.2269.0版,但是BCP为版本13生成了一个脚本。更改此版本并删除了错误,但命令无论如何都无法正常工作。结果为(0 row(s) affected)
。
我收到以下错误:
Msg 4820,Level 16,State 1,Line 1
无法批量加载。格式文件的未知版本" file.fmt"。
从此批量插入命令:
BULK INSERT Hello
FROM 'C:\data.csv'
WITH (
FORMATFILE='C:\file.fmt'
)
要生成我遵循本指南的.fmt
文件:
https://msdn.microsoft.com/en-us/library/ms191516.aspx
file.fmt
,底部为空行:
13.0
20
1 SQLCHAR 0 11 "\t" 1 person_nr Finnish_Swedish_CI_AS
2 SQLCHAR 0 50 "\t" 2 fornamn Finnish_Swedish_CI_AS
3 SQLCHAR 0 50 "\t" 3 efternamn Finnish_Swedish_CI_AS
4 SQLCHAR 0 50 "\t" 4 adress Finnish_Swedish_CI_AS
5 SQLCHAR 0 50 "\t" 5 co_adress Finnish_Swedish_CI_AS
6 SQLCHAR 0 10 "\t" 6 postnr Finnish_Swedish_CI_AS
7 SQLCHAR 0 50 "\t" 7 postadress Finnish_Swedish_CI_AS
8 SQLCHAR 0 12 "\t" 8 bevakad ""
9 SQLCHAR 0 41 "\t" 9 limit ""
10 SQLCHAR 0 24 "\t" 10 upplysning_datum ""
生成格式文件的BCP命令:
bcp [Database].[dbo].[Hello] format nul -T -n -f "C:\file.fmt"
bcp [Database].[dbo].[Hello] format nul -c -f "C:\file.fmt" -T
还有其他人经历过这个吗?
答案 0 :(得分:2)
是的,我已经体验过这一点。
您的简单解决方案是编辑格式文件并将13.0更改为12.0
我在桌面上安装了最新的SSMS并运行了bcp导出脚本时遇到了这个问题。我得到了与你完全相同的错误。我的格式文件有14.0,我的SQL Server数据库是13.0(2016)。只需编辑格式文件中的版本号就可以解决加载错误。
注意:我在命令中添加了 -V130 参数,我不再有这个问题了。您可能需要将 -V120 添加到bcp导出中。
答案 1 :(得分:1)
.FMT
重命名为.txt
。 .FMT
更改为.txt
并运行它:格式文件基本上只是一个文件,无论扩展名如何,都可以将一些信息传递给SQL。
我仍然不确定为什么总是这样。