DB2 CLI 结果输出

问题描述 投票:0回答:4

在 MySQL 中运行命令行查询时,您可以选择使用“\G”作为语句终止符,而不是在屏幕上水平列出结果集列,而是垂直列出每一列,其中对应的数据正确的。有没有办法使用 DB2 命令行实用程序实现相同或类似的功能?

常规 MySQL 结果示例

mysql> select * from tagmap limit 2;
+----+---------+--------+
| id | blog_id | tag_id |
+----+---------+--------+
| 16 |       8 |      1 |
| 17 |       8 |      4 |
+----+---------+--------+

替代 MySQL 结果示例:

mysql> select * from tagmap limit 2\G
*************************** 1. row ***************************
     id: 16
blog_id: 8
 tag_id: 1
*************************** 2. row ***************************
     id: 17
blog_id: 8
 tag_id: 4
2 rows in set (0.00 sec)

显然,当列是大字符串或结果集中有很多列时,这会更有用,但这比我可以解释的更好地演示了格式。

db2
4个回答
2
投票

我认为 DB2 命令行客户端没有这样的选项。请参阅 http://www.dbforums.com/showthread.php?t=708079 获取一些建议。有关 DB2 命令行客户端的更一般信息,您可以查看 IBM DeveloperWorks 文章 DB2 的命令行处理器和脚本


0
投票

有点晚了,但是当我搜索仅检索所选数据的选项时发现了这篇文章。

所以

db2 -x <query>
仅返回结果。更多选项可以在这里找到:https://www.ibm.com/docs/en/db2/11.1?topic=clp-options

示例:

[db2inst1@a21c-db2 db2]$ db2 -n select postschemaver from files.product

POSTSCHEMAVER                   
--------------------------------
147.3                           

  1 record(s) selected.

[db2inst1@a21c-db2 db2]$ db2 -x select postschemaver from files.product        
147.3                           

0
投票

另一个解决方案是使用

EXPORT TO <filename> OF DEL <statement>
语法来获取
<filename>
中生成的 CSV 样式输出。

OF DEL
的意思类似于“OutputFormat Delimited”。请参阅手册了解
EXPORT
命令。

示例:

db2 -x "EXPORT TO /tmp/output.csv OF DEL SELECT username, email, lastlogin FROM usertable"

不幸的是,没有已知的方法可以使其在输出文件中输出列标题。

来源:https://datageek.blog/2022/12/01/db2-basics-getting-data-out-of-db2/


-2
投票

DB2 命令行实用程序始终以表格格式显示数据。即水平行和垂直列。它不支持任何其他格式,如 mysql 的 \G 语句终止符。但是,是的,当设置 DB2_WORKLOAD=ANALYTICS 时,您可以将按列组织的数据存储在 DB2 表中。

db2 => connect to coldb

   Database Connection Information

 Database server        = DB2/LINUXX8664 10.5.5
 SQL authorization ID   = BIMALJHA
 Local database alias   = COLDB

db2 => create table testtable (c1 int, c2 varchar(10)) organize by column
DB20000I  The SQL command completed successfully.
db2 => insert into testtable values (2, 'bimal'),(3, 'kumar')
DB20000I  The SQL command completed successfully.
db2 => select * from testtable

C1          C2        
----------- ----------
          2 bimal     
          3 kumar     

  2 record(s) selected.

db2 => terminate
DB20000I  The TERMINATE command completed successfully.
© www.soinside.com 2019 - 2024. All rights reserved.