用BCP导出的数据,经常会遇到"遇到EOF","字符串右截断"之类的错误.
这些错误信息又很模糊, 很难一下子定位到底是什么错误.
我总结了一下, 自己遇到的几种情况
1.表结构不同
2.bcp版本不一致, 在处理某些类型的时候,导致错位(比如sql2000中没有varchar(max), 只有在sql2005中才有)
3.字段类型一致, 字段长度一致, 但是Nullable不同, 也会导入失败
快速检查出, 导入导出的2个表结构, 是否一致, 用下面的命令
bcp {DBName.dbo.
Table
} format nul
-
n
-
f aa.txt
-
S
%
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个文件的所有字段信息都要一致, 就能解决导入出错的各种异常了.