2013-10-22 45 views
2

我有一个庞大的数据库,我想使用BCP转储出来,然后将它加载到别处。我已经对Sybase版本的BCP(更熟悉MSSQL版本)做了相当多的研究,并且看到如何使用导入文件,但我无法弄清楚如何创建导入文件。如何生成Sybase BCP Fmt文件?

我目前做我的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 

眼下,部分给了我关于IDENTITY_INSERT的错误,无论表是否具有标识:

服务器消息:Sybase157 - 消息7756,等级16 ,状态1:由于 表没有标识属性,因此无法使用 'SET IDENTITY_INSERT'作为表'mytester.dbo.XTABLE'。

我经常用这个页面的帮助上伟大的信息,但是这是第一次我把一个问题已经,所以我谦卑地请求任何指导,你都可以提供:)

回答

1

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

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

此外,-T标志在你的BCP出来似乎有些奇怪。我知道SQLServer -T是一种安全设置,但在Sybase中它指示文本或图像列的最大大小,并且后面跟着一个数字。例如-T 32000(将是32K字节)

但要回答问题您的标题,如果您以交互方式运行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

+0

这似乎这样的伎俩,我也只好跑:sp_dboption命令mytester, 'select into/bulkcopy',true为了允许bcp插入,但在此之后,它是黄金!非常非常喜欢迈克尔。我会对你的评论做+1,但我是新的,它不会让我:) – Beatscribe

+0

Np,很高兴提供帮助。 –