【发布时间】:2017-11-25 01:51:57
【问题描述】:
我目前正在尝试将 BCP 从 Sybase ASE 数据库 (15.7) 转入 BCP 转入 SQL Server (2016)。所有 BCP 任务都在 Windows 环境中运行。
由于我有带有 CRLF 字符的记录,我需要指定一个自定义记录终止符来解决这个问题。我想使用的终止符是“~\t\t\t\t\t~\r\n”。为了便于阅读,我添加了 CRLF 字符,以防我需要打开文件。 Out命令如下:
bcp database..table out table.dat -Sserver -Uuser -Ppassword -c -t "|\t\t\t\t\t|" -r "~\t\t\t\t\t~\r\n"
当我 BCP 返回 SQL Server 时,我收到“字符串数据,右截断错误”。命令如下:
bcp database..table in table.dat -SServer -T -c -t "|\t\t\t\t\t|" -r "~\t\t\t\t\t~r\n"
我正在使用 BCP 的 ASE 15.7 SP126 版本。 我正在使用 SQL Server 2016 版本的 BCP (13.0.1601.5) for in。
基于线程here,我确定问题出在用于-r 选项的\r\n 字符上。如果我只在 out 上使用 -r "\r\n" 并在 in 上使用 -r "0x0a" 进行测试,它可以工作(除了在数据中有 CRLF 的记录上失败)。
只要我删除了 out 和 in 上的 \r\n 字符,我就可以成功地 BCP in 数据。
有谁知道我是否可以使用可打印字符 + CRLF 的组合?
干杯。
【问题讨论】:
标签: sql-server sap-ase sql-server-2016 bcp