BCP导入错误"投射规范的字符值无效"

时间:2015-07-10 11:29:25

标签: sql-server-2012 sqlbulkcopy bcp

所有 我正在使用BCP进行导入导出并获得"无效的角色值用于投射规范"尝试导回时,只有1(导出的第一行)行的错误。 表结构 Col1 - 数字(19,0) Col2 - NVARCHAR(400) Col3 - NVARCHAR(400) 我正在使用以下命令

FOR Export

EXEC master..xp_cmdshell 'bcp "SELECT TOP 10 Col1, Col2, Col3 FROM Server.dbo.TableName" queryout C:\Data\File.dat -S Server -T -t"<EOFD>" -r"<EORD>" -w'

我正在生成一个FORMAT文件

EXEC master..xp_cmdshell 'BCP Server.dbo.TableName format nul -S Server -T -w -f "C:\Data\File.fmt" -t"<EOFD>" -r"<EORD>" '

现在,当我尝试将数据导回SQL Server表时,我收到错误&#34; 投射规范的字符值无效&#34; 错误日志显示了类似这样的内容

#@ Row 1, Column 1: Invalid character value for cast specification @#

?1000   Mytestdataunicoded  nothing

现在从哪里来?在我的列数据开始时添加的内容仍然未知。

我尝试使用格式文件导入时能够成功导入,也可以在使用switch -c时成功导入,但出于某些目的,我们必须使用-w开关来执行此操作。

1 个答案:

答案 0 :(得分:0)

使用-w选项时,我相信BCP会忽略任何-t或-r选项,并使用\ t和\ n以及字段和行终止符。

来自MS docs:

-w使用Unicode字符执行批量复制操作。此选项不会提示每个字段。它使用nchar作为存储 类型,没有前缀,\ t(制表符)作为字段分隔符,\ n (换行符)作为行终止符。 -w与不兼容 -c。