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

时间:2010-05-14 10:07:26

标签: informix dbaccess

假设我有:

  • 名为“my_database”的Informix数据库
  • 一个名为“my_table”的表格,其中包含“col_1”,“col_2”和“col_3”列:

我可以通过创建 my_table.sql 脚本来提取表的内容,如:

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

并从命令行调用dbaccess:

dbaccess my_database my_table.sql

这将生成包含以下内容的 my_table.txt 文件:

value_a1|value_a2|value_a3
value_b1|value_b2|value_b3

现在,如果我想获取 my_table.txt 中的列名,我该怎么办?像:

col_1|col_2|col_3
value_a1|value_a2|value_a3
value_b1|value_b2|value_b3

3 个答案:

答案 0 :(得分:1)

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

程序SQLCMD(不是Microsoft新手 - 原始版本,可从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 - 它没有正确格式化列名或列类型行。)

答案 1 :(得分:1)

为什么你不使用dbschema?

获取一个表的模式(不带-t参数显示所有数据库)

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

获取一个存储过程的模式

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

答案 2 :(得分:0)

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

cat header.txt my_table.txt > my_table_wth_head.txt