BCP:使用保留标识值导入数据会导致“转换规范的字符值无效”

时间:2014-03-09 11:01:52

标签: sql-server azure-sql-database bcp

将数据从SQL Server 2012复制到Azure DB时出现问题。 在这里,我列出了我所做的步骤。

  1. 创建.dat.xml格式文件,如下所示:

    bcp.exe dbo.user_sayti out "c:\\dbo.user_sayti.dat" -w -k -Slocalhost -dsource_db -Uuser -Ppwd

    bcp.exe dbo.user_sayti format nul -f "c:\\dbo.user_sayti.xml" -w -x -Slocalhost -dsource_db -Uuser -Ppwd

    dbo.user_sayti.dat
    dbo.user_sayti.xml

  2. 尝试将其复制到Azure DB并保留标识值:

    bcp.exe dbo.user_sayti in "c:\\dbo.user_sayti.dat" -E -f "c:\\dbo.user_sayti.xml" -Sserver.database.windows.net -dtarget_db -Uuser -Ppwd

    并且Invalid character value for cast specification错误 我不明白为什么,因为.dat文件包含标识列127的值id (PK, int, not NULL),并且值的数量与行数匹配。

  3. 然后我尝试了没有-E的相同命令,并且该过程成功完成(此特定表中只有一行,它出现在target_db中,标识列值= 1)。

1 个答案:

答案 0 :(得分:0)

-f替换-w参数(模式定义)解决了这个愚蠢的问题:)