我想要做的是將表複製到文件中,截斷表並將數據複製回表中。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
,現在它工作。
嗯......現在我得到了:'在bcp數據文件中發現負長度前綴'。 – andreih
你有數據庫的其他問題嗎?也許有些不一致?也許我應該通過執行bcp out/truncate/bcp來問你想要解決什麼問題? –
沒有問題。有數以億計,也許數十億的插入,我只想保留相關的數據(最後的8-9百萬行,並存儲一些不太相關的文件)。我想做一個自動的過程來做到這一點。沒有不一致,因爲我檢查了數據。但是,數據庫或數據庫服務器可能存在問題,但如果是這樣,我必須深入挖掘才能獲得一些結果。 – andreih