我在 Sybase ASE 中有一个包含 60 多列的大表,我想 bcp 出 12 列。我正在检查手册上的语法,但找不到提及列名的方法。
我还想在检索数据时添加一些逻辑,例如:
convt = case when A.isConvertible='0' then 'N' else 'Y' end
我主要是在寻找类似 SQL Server bcp 中可用的 queryout 的东西。
我无法在 Sybase 端创建对象。这对我来说是一个来源,我只能在上面做 SELECT 。
我在 Sybase ASE 中有一个包含 60 多列的大表,我想 bcp 出 12 列。我正在检查手册上的语法,但找不到提及列名的方法。
我还想在检索数据时添加一些逻辑,例如:
convt = case when A.isConvertible='0' then 'N' else 'Y' end
我主要是在寻找类似 SQL Server bcp 中可用的 queryout 的东西。
我无法在 Sybase 端创建对象。这对我来说是一个来源,我只能在上面做 SELECT 。
这很容易通过创建一个只包含您想要的列和值的视图来实现。然后,您可以使用bcp从视图中检索数据。
由于您无法在相关数据库中创建对象,这会使事情变得复杂,因为bcp仅支持导出完整对象。
仅对相关数据库具有选择权限的一种方法是在tempdb中创建视图。它不会在数据服务器重新启动之间持续存在,但它允许您bcp出您需要的列。
第二种解决方法可能是在本地系统上安装 ASE 实例,并通过 CIS(组件集成服务)安装远程表。此时,您应该能够创建所需的视图,并从本地系统执行 bcp out。
这可以通过isql
在 unix 中使用实用程序来实现:
isql -Uuser -Sserver -Ppassword -iinputfile -ooutputfile
您还可以使用-w
和-s
选项格式化数据。