bcp導(dǎo)入導(dǎo)出數(shù)據(jù)發(fā)生異常解決方案
來源:程序員人生 發(fā)布時間:2013-12-03 06:18:51 閱讀次數(shù):3613次
用BCP導(dǎo)出的數(shù)據(jù),經(jīng)常會遇到"遇到EOF","字符串右截斷"之類的錯誤.
這些錯誤信息又很模糊, 很難一下子定位到底是什么錯誤.
我總結(jié)了一下, 自己遇到的幾種情況
1.表結(jié)構(gòu)不同
2.bcp版本不一致, 在處理某些類型的時候,導(dǎo)致錯位(比如sql2000中沒有varchar(max), 只有在sql2005中才有)
3.字段類型一致, 字段長度一致, 但是Nullable不同, 也會導(dǎo)入失敗
快速檢查出, 導(dǎo)入導(dǎo)出的2個表結(jié)構(gòu), 是否一致, 用下面的命令
bcp {DBName.dbo.Table} format nul -n -f aa.txt -S %DBSERVER% -U"%DBUSERNAME%" -P"%DBPWD%"
返回的數(shù)據(jù)內(nèi)容
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版本, 導(dǎo)入導(dǎo)出的時候, 最好要一致.
第二行是字段數(shù)量
第三行開始, 導(dǎo)入導(dǎo)出的2臺電腦上, 這2個文件的所有字段信息都要一致, 就能解決導(dǎo)入出錯的各種異常了.
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈