代码之家  ›  专栏  ›  技术社区  ›  ivo

Informix:如何使用dbaccess获取表内容和列名?

  •  2
  • ivo  · 技术社区  · 14 年前

    假设我有:

    • 名为“我的数据库”的Informix数据库
    • 名为“我的表格”的表格,列为“col_1”、“col_2”和“col_3”:

    我可以通过创建一个 MyoTabel.SQL 脚本类似:

    unload to "my_table.txt"
    select * from my_table;
    

    并从命令行调用dbaccess:

    dbaccess my_database my_table.sql
    

    这将产生 MyoTable 包含以下内容的文件:

    value_a1|value_a2|value_a3
    value_b1|value_b2|value_b3
    

    现在,如果要获取 MyoTable ?像:

    col_1|col_2|col_3
    value_a1|value_a2|value_a3
    value_b1|value_b2|value_b3
    
    3 回复  |  直到 7 年前
        1
  •  1
  •   Jonathan Leffler    14 年前

    没有一个标准的Informix工具根据需要将列名放在输出的顶部。

    程序sqlcmd(不是Microsoft Newcomer-原始程序,可从 IIUG Software Archive )有能力这样做;使用 -H 列标题选项(和 -T 获取列类型)。

    sqlcmd -U -d my_database -t my_table -HT -o my_table.txt
    sqlunload -d my_database -t my_table -HT -o my_table.txt
    

    如果您需要的话,sqlcmd还可以执行csv输出(但是-bug-它没有正确地格式化列名或列类型行)。

        2
  •  0
  •   huzeyfe koriander    11 年前

    找到了一个更简单的解决方案。把标题放在一个文件里,比如说 header.txt (它将包含一行“ col_1|col_2|col_3 “)然后,要组合头文件和输出文件,请运行:

    cat header.txt my_table.txt > my_table_wth_head.txt
    
        3
  •  0
  •   Fernando Ordoñez    7 年前

    为什么不使用dbschema?

    获取一个表的架构(不带-t参数show all database)

    dbschema -d [DBName] -t [DBTable] > file.sql
    

    获取一个存储过程的架构

    dbschema -d [DBName] -f [SPName] > file.sql