【问题标题】:Output data to file using Isql sybase使用 Isql sybase 将数据输出到文件
【发布时间】:2017-11-24 19:48:30
【问题描述】:

我正在使用以下命令将数据写入 isql 中的 csv 文件

$ISQL -S DSA1_PROD -U emer_r_gh5432 -X

Query -

    Select * from SecDb..LoginOwnerTb where SvrId= 45566 and OwnerRitsId = '1001167635';
    OUTPUT TO '/tmp/sometable.csv' FORMAT ASCII DELIMITED BY ';' QUOTE '';
    go

它说 服务器“ABC”,第 1 行: ';' 附近的语法不正确。

请帮忙

【问题讨论】:

    标签: sybase isql


    【解决方案1】:

    注意:我假设您正在使用 Sybase ASE 和 isql 命令行工具。在使用 SQLAnywhere、IQ 和/或 Advantage 数据库产品时,可能还有其他方法可以完成您尝试做的事情... *耸耸肩* ...

    OUTPUT TO 子句与 dbisql GUI 工具一起使用。

    使用 isql 命令行工具执行与OUTPUT 有点相似的操作:

    -- once logged in via isql ...
    
    -- to write to new file; to overwrite existing file:
    
    select ....
    go > /path/to/local/file/accessible/by/user/running/isql
    
    -- to append to existing file:
    
    select ...
    go >> /path/to/local/file/accessible/by/user/running/isql
    

    要设置列分隔符,您可以在从命令行调用 isql 时使用-s 标志,例如:

    # set the column delimiter to a semi-colon:
    $ isql ... -s ';' ...
    
    # set the column delimiter to a pipe:
    $ isql ... -s '|' ...
    

    请记住,输出仍将使用固定宽度的列生成,每列的宽度由 a) 列的数据类型“宽度”或 b) 列的标题/标签宽度决定,以较宽者为准。

    我不知道使用 isql 命令行工具执行以下操作的任何方法:

    • 在 isql 会话中即时指定列分隔符
    • 指定quote 字符
    • 删除多余的空格(即以真正的分隔格式输出数据,而不是固定宽度格式)

    要生成真正的分隔文件,您有几个选择:

    • 看看 dbisql GUI 工具是否符合您的目的 [我不使用 dbisql 所以我*假设* OUTPUT TO 子句按预期工作]
    • 使用 bcp(命令行)实用程序将数据放入分隔文件 [bcp 选项,以及如何处理表的子集,是一个更大的讨论,即在此回复中无法解决]
    • 看看您是否可以找到另一个(第 3 方)工具,可以将所需的数据集提取到分隔文件中

    【讨论】:

      猜你喜欢
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      相关资源
      最近更新 更多