2

我有一个庞大的数据库,我想使用 BCP 将其转储出来,然后将其加载到其他地方。我对 BCP 的 Sybase 版本进行了大量研究(更熟悉 MSSQL 版本),并且我了解了如何使用导入文件,但我终生无法弄清楚如何创建一个。

我目前正在制作我的 Sybase bcp 数据文件,如下所示:

bcp mytester.dbo.XTABLE out XTABLE.bcp -U sa -P mypass -T -n 

并尝试像这样将它们重新导入:

bcp mytester.dbo.XTABLE in XTABLE.bcp  -E -n -S Sybase_157 -U sa -P SyAdmin 

现在,无论表是否具有标识,IN 部分都会给我一个关于 IDENTITY_INSERT 的错误:

服务器消息:Sybase157 - 消息 7756,级别 16,状态 1:无法对表“mytester.dbo.XTABLE”使用“SET IDENTITY_INSERT”,因为该表没有标识属性。

我经常使用此页面上的重要信息寻求帮助,但这是我第一次提出问题,所以我谦虚地请求大家可以提供任何指导:)

4

1 回答 1

1

在您的 BCP 中,该-E标志告诉 bcp 从输入文件中获取标识列值。我会尝试在没有那个标志的情况下运行它。Sybase 中的 fmt 文件有点挑剔,如果可能,我会尽量避免。因此,只要您的系统之间的模式相同,以下命令就应该起作用:

bcp mytester.dbo.XTABLE in XTABLE.bcp -n -S Sybase_157 -U sa -P SyAdmin 

此外,-T您 bcp out 上的标志似乎很奇怪。我知道 SQLServer -T 是一个安全设置,但在 Sybase 中它表示文本或图像列的最大大小,后跟一个数字..例如-T 32000(将是 32Kbytes)

但要回答标题中的问题,如果您以交互方式运行bcp(不指定-c-n-f),它将逐步遍历每一列,提示输入信息。最后它会询问您是否要创建格式文件,并允许您指定文件的名称。

作为参考,这里是语法和可用标志: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc30191.1550/html/utility/ X14951.htm

实用指南中的章节:http: //infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc30191.1550/html/utility/ BABGCCIC.htm

于 2013-10-22T19:48:53.843 回答