【问题标题】:Sybase - How To Output Variable Contents To FileSybase - 如何将变量内容输出到文件
【发布时间】:2019-02-06 22:50:51
【问题描述】:

我正在使用 Interactive SQL 在 Sybase 中编写一个过程。 proc 包含几个SELECT 语句,将结果存储在变量中,例如

DROP VARIABLE IF EXISTS @totalRows;
CREATE VARIABLE @totalRows LONG VARCHAR;
SELECT COUNT(*) INTO @totalRows FROM <MyTable>;

我希望能够将此查询的结果输出到 CSV 文件,但在尝试运行以下语句时出现错误

DROP VARIABLE IF EXISTS @totalRows;
CREATE VARIABLE @totalRows LONG VARCHAR;
SELECT COUNT(*)  INTO @totalRows FROM <MyTable>;
OUTPUT TO 'C:\\temp\\TEST.CSV' FORMAT ASCII DELIMITED BY ';' QUOTE '' WITH COLUMN NAMES;

错误读取

Could not execute statement.  
Syntax error near 'OUTPUT' on line 4.  
SQLCODE=-131, ODBC 3 State="42000".  
Line 1, column 1

如果我删除查询的OUTPUT TO 部分,它运行良好。在 Sybase 中是否可以通过这种方式将变量的内容写入外部文件?

【问题讨论】:

    标签: sql sybase sap-iq


    【解决方案1】:

    Sybase 似乎不支持“OUTPUT”子句。 作为一种解决方法,您可以使用一些基于文本的工具(如 sqlite)运行此查询并将输出重定向(>)到文件中,如果您碰巧在客户端使用 linux 机器。 或者,您可以在 Windows 中添加与您的数据库相对应的 ODBC 数据源(这将需要 sybase ODBC 驱动程序),并使用 MS Excel 嵌入式工具 Microsoft Query(数据 -> 从其他来源 -> 从 Microsoft Query)来导出您的查询将结果直接存入 excel 数据表,您可以将其另存为 CSV。

    【讨论】:

      【解决方案2】:

      OUTPUT TO 是 dbisql 命令,即 dbisql 客户端实用程序的指令。它不是 SQL 语句。如果您尝试使用 dbisql 以外的任何内容执行此操作,则会收到错误消息。 顺便说一句——我相信 OUTPUT 子句必须跟在终止 SELECT stmt 的分号之后,即两者之间没有换行符。

      【讨论】:

        【解决方案3】:

        需要在输出语句前添加选择变量

        DROP VARIABLE IF EXISTS @totalRows;
        CREATE VARIABLE @totalRows LONG VARCHAR;
        SELECT COUNT(*)  INTO @totalRows FROM <MyTable>;
        SELECT @totalRows; --select variable before output
        OUTPUT TO 'C:\\temp\\TEST.CSV' FORMAT ASCII DELIMITED BY ';' QUOTE '' WITH COLUMN NAMES;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-31
          • 1970-01-01
          • 1970-01-01
          • 2017-09-25
          • 1970-01-01
          • 2020-03-25
          • 2014-02-24
          • 1970-01-01
          相关资源
          最近更新 更多