2

我想要做的是将表复制到文件中,截断表并将数据复制回表中。

为此,我使用以下两个命令:

出: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.

有趣的部分(至少对我来说)是我只得到第一列是奇数的行的错误。从前 300 万行中,它减少了一半,所有行的第一列 ( the PK) 都是奇数。

我尝试了不同的选项,但似乎都不起作用:charset据我所知,没有大的列被截断,也没有carriage return丢失。

任何帮助将不胜感激。

更新:创建格式文件后没有更多错误,但它只将一半数据复制回表中。

更新:我设法创建了一个可以工作并加载所有数据的格式文件,但我不能在另一台服务器上使用它(它在测试环境中工作,它需要在生产环境中运行),因为它说Attempt to read an unknown version of bcp format-file.?我知道这意味着什么,但有没有办法找到版本的正确值?

已解决:在重新挖掘数据库后,似乎问题确实是数据不一致,因为VIEW生产中用于复制表只复制了 25 列,但表有 26 列(有人更改了表,我没有'不知道也没有注意到它发生了)。修复了View,现在它可以工作了。

4

1 回答 1

1

由于您要离开/进入同一台服务器,我建议您使用bcp本机标志。

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

字符模式会变得很奇怪,我只在需要时使用它。

于 2013-08-07T13:46:58.967 回答