【问题标题】:How to get index name, key and description from sybase table如何从 sybase 表中获取索引名称、键和描述
【发布时间】:2013-04-03 04:32:41
【问题描述】:

我想从 Unix shell 脚本为特定表创建索引,因此我需要该特定表的索引名称、索引键和索引描述。

"sp_helpindexes" 提供了所有这些详细信息以及一些不需要的行,但我需要其他方法来仅获取索引名称、键和描述。

有人请帮我解决这个......?

【问题讨论】:

    标签: indexing backup sybase table-index


    【解决方案1】:

    从 sysindexes 表中获取索引名称
    从 sysindexes 中选择名称、indid、keycnt,其中 id=object_id("table_name")
    然后使用 index_col(table_name,indexid,keycnt-1) 查找键。

    希望这会有所帮助

    谢谢,
    戈帕尔

    【讨论】:

      【解决方案2】:

      自定义 SQL 请求

      您可以使用 sp_helptext 命令找到 sp_helpindex 的描述,如下所示:

      use sybsystemprocs
      go
      
      sp_helptext sp_helpindex
      go
      

      这将为您提供存储过程的定义。然后你可以提取你需要的 SQL 请求(这可能很棘手,另一个 store_proc)。

      用于处理 sp_helpindex 输出的 Shell 脚本

      另一方面,它似乎只是一个外壳问题,一旦你可以调用你的 SQL 服务器。 例如,使用 sqsh 程序(类似 isql 的程序),您可以拥有一个 myindexes.sql 文件,其中包含:

      use databaname
      go
      sp_helpindex tablename
      go
      

      然后是命令

      sqsh -U username -P password -S SYBASESERVER -i myindexes.sql -h > myindexes.txt
      

      将为您提供可以处理的 sp_helpindex 输出。 使用 sqsh 输出,第 3 行包含索引名称和键,第 4 行包含描述。 我用:

      #!/bin/bash
      
      # Call sqh command : output in myindex.txt
      sqsh -U username -P password -S SYBASESERVER -i myindexes.sql -h > myindex.txt
      
      # Then process the output
      INAME=`sed '3!d' myindex.txt | tr -s ' ' | cut -d ' ' -f 2`
      IKEYS=`sed '3!d' myindex.txt | tr -s ' ' | cut -d ' ' -f 3`
      IDESC=`sed '4!d' myindex.txt | tr -s ' ' | cut -f 2`
      
      # print out the values
      echo "$INAME $IKEYS $IDESC"
      
      # Clean up the files
      rm myindex.txt
      

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        在 Sybase 版本 SAP IQ/16 中,您可以获得以下索引列表(表名 my_table 区分大小写):

        select *
        from sys.sysindexes
        where tname = 'my_table';
        

        【讨论】:

          猜你喜欢
          • 2010-11-28
          • 2023-03-22
          • 2023-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-09
          • 2011-02-24
          相关资源
          最近更新 更多