2

假设我有:

  • 一个名为“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
4

3 回答 3

2

为什么不使用 dbschema?

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

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

获取一个存储过程的架构

dbschema -d [DBName] -f [SPName] > file.sql
于 2017-07-26T04:50:59.373 回答
1

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

程序 SQLCMD(不是微软的新人——最初的,可从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 输出(但是 - 错误 - 它不能正确格式化列名或列类型行)。

于 2010-05-14T18:25:38.063 回答
0

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

cat header.txt my_table.txt > my_table_wth_head.txt
于 2013-06-12T10:16:26.287 回答