如何从具有多列的表中从sybase中删除少量列?检索数据时是否还可以适应某些逻辑?

时间:2013-01-11 10:17:32

标签: sybase-ase sqlbulkcopy bulk bcp

我在Sybase ASE中有一个包含60 +列的大表,我想要bcp out 12列。我正在检查manuals上的语法,但找不到提及列名的方法。

我还想在检索数据时加入一些逻辑,例如:

convt = case when A.isConvertible='0' then 'N' else 'Y'  end

我主要是在寻找SQL Server bcp中提供的查询功能。

我无法在Sybase端创建对象。这是我的一个来源,我只能对它做选择。

2 个答案:

答案 0 :(得分:1)

通过仅使用所需的列和值创建视图,这很容易实现。然后,您可以使用 bcp 从视图中检索数据。

由于您无法在相关数据库中创建对象,因此 bcp 仅支持导出整个对象,因此会使事情变得复杂。

只有对相关数据库具有选择权限的一种方法是在 tempdb 中创建视图。它不会在dataserver重新启动之间持续存在,但它允许您 bcp 输出所需的列。

第二种方法可能是在本地系统上安装ASE,并通过CIS(Component Integration Services)安装远程表。此时,您应该能够创建所需的视图,并从本地系统执行bcp。

答案 1 :(得分:0)

这可以通过在unix中使用isql实用程序来实现:

isql -Uuser -Sserver -Ppassword -iinputfile -ooutputfile

您还可以使用-w-s选项格式化数据。