如何从DB2获取列名

时间:2014-04-11 11:54:48

标签: db2 ibm-midrange

我想如何从DB2-DB获取表的列名。

我的意思不是:

SELECT * FROM TABLE A;

我会得到:

|  ColumnA  |  ColumnB |
------------------------
  ValueA 1     ValueB 1

  ValueA 2     ValueB 2

  ValueA 3     ValueB 3

但更像是:

SELECT column_name FROM TABLE A;

并获得:

ColumnA, ColumnB

4 个答案:

答案 0 :(得分:7)

对于DB2 for i,此信息位于

qsys2.syscolumns2  (for 7.1+, better performance if just looking at 1 table's columns)
qsys2.syscolumns (for any recent version)

ODBC / JDBC和DB2 LUW v8兼容

sysibm.sqlcolumns

ANSI / ISO标准

INFORMATION_SCHEMA.columns

(注意INFORMATION_SCHEMA是QSYS2的同义词)

此处的目录视图的完整列表: http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/topic/db2/rbafzcatalog.htm

答案 1 :(得分:0)

此信息可在表格syscat.columns中找到。

答案 2 :(得分:0)

db400 (IBM i) 中任何表 (PF) 的列名,我们可以使用 java 程序检索列名。 示例代码:

 String sql = "select * from KFILNBB.V_OCADATA";
        PreparedStatement pstmt = StaticUtil.getDB2Connection().prepareStatement(sql);
                ResultSet rs = pstmt.executeQuery();
    
                ResultSetMetaData rs1 = pstmt.getMetaData();
    
                ResultSetMetaData rsmd = rs.getMetaData();
                int numberOfColumns = rsmd.getColumnCount();
                System.out.println(rsmd.getColumnLabel(1));

-----------db2 连接-----------

public static Connection getDB2Connection() throws ClassNotFoundException, SQLException {
        String DRIVER_NAME = "com.ibm.as400.access.AS400JDBCDriver";
        
        String URL = "jdbc:as400://ibm i IP address";
         String USERNAME = "username";
        String PASSWORD = "password";
        Class.forName(DRIVER_NAME);
        return DriverManager.getConnection(URL , USERNAME, PASSWORD);
    }

答案 3 :(得分:0)

如果您是从 Linux bash shell 执行 db2 命令的另一种方法:

 $ db2 "DESCRIBE TABLE A" |awk '{printf "%s\t",$1} END{print}'