Informix:如何获得的表的内容和列名的使用dbaccess?
题
假如我有:
- Informix database named"my_database"
- 表名为"忽略大小"与列"col_1","col_2"和"col_3":
我可以提取内容的发表,通过创建一个 忽略大小.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
解决方案
没有任何标准Informix的工具,把列名在顶部的输出你想要的。
该程序SQLCMD(不Microsoft新人-原来一个,可以从 IIUG软件档案)有能力做到这一点;使用 -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出,如果这就是你需要(但-错误-这不格式列名或列类型线路正确).
其他提示
为什么你不用dbschema?
获取模式的一个表格(没有-t参数显示所有的数据库)
dbschema -d [DBName] -t [DBTable] > file.sql
获取模式的一个存储程序
dbschema -d [DBName] -f [SPName] > file.sql
发现一个更简单的解决方案。将标题中的一个文件说 header.txt
(它将包含一个单一的线"col_1|col_2|col_3
"),然后结合文件的头和你的输出的文件的运行:
cat header.txt my_table.txt > my_table_wth_head.txt
不隶属于 StackOverflow