我想做的是将一个表复制到一个文件中,截断表并将数据复制回表中。
为此,我使用了以下两个命令:
输出:bcp TABLE out file.csv -S SERVER -U user -P password -r '\n' -t '^|' -c
In: bcp TABLE in file.csv -S SERVER -U user-P password -r '\n' -t '^|' -c -J iso_1 -b 5000
这是我得到的错误:
CSLIB 消息:- L0/O0/S0/N36/1/0:
cs_convert:cslib 用户 api 层:公共(public)库错误:结果被截断,因为转换/操作导致溢出。
有趣的部分(至少对我而言)是我只对第一列为奇数 的行得到错误。从前 300 万行中,它削减了一半,所有行的第一列( PK
)都是奇数。
我尝试了不同的选项,但似乎都不起作用:据我所知,charset
没有问题,没有大的列被截断,它不是 回车符
丢失。
如有任何帮助,我们将不胜感激。
更新:创建格式化文件后,不再有错误,但它只将一半数据复制回表中。
更新:我设法创建了一个可以工作并加载所有数据的格式文件,但我不能在另一台服务器上使用它(它在测试环境中工作,它需要在生产环境中运行),因为它说 Attempt to read an unknown version of bcp format-file.
?我知道这意味着什么,但是有什么方法可以找到版本的正确值吗?
已解决: 回溯数据库后,似乎问题确实是数据不一致,因为生产中使用的 VIEW
仅复制表复制了 25 列,但表格有 26 列(有人更改了表格,我不知道也没有注意到它发生了)。修复了 View
,现在它可以工作了。
最佳答案
因为你要离开/进入同一台服务器,我建议你使用带有 native 标志的bcp
。
bcp DBNAME..TABLE out file.bcp -SSERVER -Uuser -Ppassword -n
bcp DBNAME..TABLE in file.bcp -SSERVER -Uuser -Ppassword -n -b5000
字符模式可能会很奇怪,我只在需要时才使用它。
关于database - Sybase bcp 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18103096/