【问题标题】:How Do I Generate Sybase BCP Fmt file?如何生成 Sybase BCP Fmt 文件?
【发布时间】:2013-10-22 19:33:01
【问题描述】:

我有一个庞大的数据库,我想使用 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' 因为 表没有标识属性。

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

【问题讨论】:

    标签: sybase sap-ase


    【解决方案1】:

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

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

    此外,您 bcp 输出上的 -T 标志似乎很奇怪。我知道 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

    【讨论】:

    • 这似乎成功了,我还必须运行: sp_dboption mytester,'select into/bulkcopy',true 以允许 bcp 插入,但在那之后,它是金色的!非常感谢你,迈克尔。我会为您的评论 +1,但我是新手,它不会让我 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 2013-08-08
    • 2011-02-05
    • 2016-06-07
    • 2018-09-29
    • 2015-10-27
    相关资源
    最近更新 更多