database - Sybase bcp 错误

标签 database sybase sap-ase bcp bulk-load

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

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

输出: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/

相关文章:

database - 如何找到在 Sybase 和 Oracle 中创建数据库转储的确切时间?

t-sql - Sybase TSQL如何选择没有 `-`字符

python - 从 Python 打开 Sybase-ASE 连接时出现字符集转换问题

java - hibernate session.save() 插入与对象不同的值

mysql - 我应该使用文件还是数据库?

database - 授予对 db SYBASE 中所有表的权限

django - 从 Django 连接到 Sybase 数据库

php - 放入数据库的图像信息(名称、类型、大小、url)

mysql - SQL 选择重叠行

common-table-expression - Sybase ASE 12.5 是否支持公用表表达式?