bcp导入导出数据发生异常解决方案

用BCP导出的数据,经常会遇到"遇到EOF","字符串右截断"之类的错误.
这些错误信息又很模糊, 很难一下子定位到底是什么错误.

我总结了一下, 自己遇到的几种情况
1.表结构不同
2.bcp版本不一致, 在处理某些类型的时候,导致错位(比如sql2000中没有varchar(max), 只有在sql2005中才有)
3.字段类型一致, 字段长度一致, 但是Nullable不同, 也会导入失败


快速检查出, 导入导出的2个表结构, 是否一致, 用下面的命令
bcp {DBName.dbo. Table }  format  nul   - - f aa.txt  - % DBSERVER %   - U" % DBUSERNAME % - P" % DBPWD % "

返回的数据内容
9.0
10
1        SQLINT         0         4         ""     1      ID                                  ""
2        SQLINT         1         4         ""     2      User_Accounts                       ""
3        SQLINT         1         4         ""     3      MoneyNum                            ""
4        SQLINT         1         4         ""     4      EventID                             ""
5        SQLNCHAR       2         400       ""     5      Describe                 Chinese_PRC_CI_AS
6        SQLDATETIME    1         8         ""     6      EventDate                           ""
7        SQLINT         1         4         ""     7      ServerID                            ""
8        SQLINT         1         4         ""     8      ServerType                          ""
9        SQLNCHAR       2         400       ""     9      Remark                   Chinese_PRC_CI_AS
10       SQLINT         0         4         ""     10     CurrentDianQuan                     ""

第一行是BCP版本, 导入导出的时候, 最好要一致.
第二行是字段数量
第三行开始, 导入导出的2台电脑上, 这2个文件的所有字段信息都要一致, 就能解决导入出错的各种异常了.




你可能感兴趣的:(解决方案)