2013-08-07 85 views
2

我想要做的是將表複製到文件中,截斷表並將數據複製回表中。Sybase bcp錯誤

對於這一點,我現在用的是以下兩個命令:

日期:bcp TABLE out file.csv -S SERVER -U user -P password -r '\n' -t '^|' -c
在:bcp TABLE in file.csv -S SERVER -U user-P password-r '\n' -t '^|' -c -J iso_1 -b 5000

這是錯誤我得到:

CSLIB Message: - L0/O0/S0/N36/1/0:
cs_convert: cslib user api layer: common library error: The result is truncated because the conversion/operation resulted in overflow.

有趣的部分(對我來說,至少)是我得到的錯誤對於第一列爲ODD號碼的行。從前300萬行,它削減了一半,所有第一列(PK)是一個奇數。

我嘗試了不同的選項,但似乎沒有任何工作:據我所知,charset沒有問題,沒有巨大的列,這樣他們被截斷,它不是carriage return丟失。

任何幫助將不勝感激。

更新:創建格式文件後,沒有更多的錯誤,但它只複製一半數據返回到表中。

更新:我設法創建一個格式文件,它的工作原理,並加載所有數據,但我不能使用另一臺服務器上(它在測試環境中,它需要在生產環境中運行),因爲它說Attempt to read an unknown version of bcp format-file. ?我知道這意味着什麼,但有什麼方法可以找到版本的正確值?

解決:挖回數據庫之後,似乎這個問題確實是數據不一致由於在生產中使用複製表VIEW只複製25列,但表中有26列(有人改變了桌子,我不知道,並沒有注意到它發生了)。修正了View,現在它工作。

回答

1

由於您要走出/進入同一臺服務器,我建議您使用帶本機標誌的bcp

bcp DBNAME..TABLE out file.bcp -SSERVER -Uuser -Ppassword -n 
bcp DBNAME..TABLE in file.bcp -SSERVER -Uuser -Ppassword -n -b5000 

字符模式可以變得更奇怪,我只在需要時才使用它。

+0

嗯......現在我得到了:'在bcp數據文件中發現負長度前綴'。 – andreih

+0

你有數據庫的其他問題嗎?也許有些不一致?也許我應該通過執行bcp out/truncate/bcp來問你想要解決什麼問題? –

+0

沒有問題。有數以億計,也許數十億的插入,我只想保留相關的數據(最後的8-9百萬行,並存儲一些不太相關的文件)。我想做一個自動的過程來做到這一點。沒有不一致,因爲我檢查了數據。但是,數據庫或數據庫服務器可能存在問題,但如果是這樣,我必須深入挖掘才能獲得一些結果。 – andreih