我不知道如何称呼这个“混乱的控制台输出”,所以我不能用谷歌寻求解决方案。
我运行db2 describe indexes for table TABLENAME show detail
我如何以人类可读的格式读取此命令的输出?
db2 describe indexes for table TABLENAME | vim
没有一种方法可以告诉DB2命令行处理器以不同的格式输出数据。
$ db2 -f myfile.sql
--#SET TERMINATOR @
SET SERVEROUTPUT ON@
BEGIN
DECLARE L_INDSCHEMA VARCHAR(128);
DECLARE L_INDNAME VARCHAR(128);
DECLARE L_UNIQUE VARCHAR(128);
DECLARE L_COLCOUNT SMALLINT;
DECLARE L_IDXTYPE CHAR(26);
DECLARE L_IDXPART CHAR(18);
DECLARE L_IDXID SMALLINT;
DECLARE L_DATATYPE VARCHAR(128);
DECLARE L_HASHED CHAR(1);
DECLARE L_LENGTH SMALLINT;
DECLARE L_PATTERN VARCHAR(500);
DECLARE L_COLNAMES VARCHAR(1984);
DECLARE SQLSTATE CHAR(5);
DECLARE l1 RESULT_SET_LOCATOR VARYING;
CALL ADMIN_CMD('DESCRIBE INDEXES FOR TABLE SYSIBM.SYSTABLES SHOW DETAIL');
ASSOCIATE RESULT SET LOCATOR (l1) WITH PROCEDURE ADMIN_CMD;
ALLOCATE C1 CURSOR FOR RESULT SET l1;
L1: LOOP
FETCH C1 INTO
L_INDSCHEMA, L_INDNAME, L_UNIQUE, L_COLCOUNT, L_IDXTYPE, L_IDXPART
, L_IDXID, L_DATATYPE, L_HASHED, L_LENGTH, L_PATTERN, L_COLNAMES
;
IF SQLSTATE = '02000' THEN LEAVE L1; END IF;
CALL DBMS_OUTPUT.PUT_LINE(x'0a' || RTRIM(L_INDSCHEMA) || '.' || L_INDNAME );
CALL DBMS_OUTPUT.PUT_LINE(' UNIQUE RULE : ' || L_UNIQUE);
CALL DBMS_OUTPUT.PUT_LINE(' COLUMN COUNT: ' || L_COLCOUNT);
CALL DBMS_OUTPUT.PUT_LINE(' INDEX TYPE : ' || L_IDXTYPE);
--CALL DBMS_OUTPUT.PUT_LINE(' INDEX PART : ' || L_IDXPART);
CALL DBMS_OUTPUT.PUT_LINE(' IID : ' || L_IDXID);
CALL DBMS_OUTPUT.PUT_LINE(' COLUMN NAMES: ' || L_COLNAMES);
END LOOP;
CLOSE C1;
END
@