我想知道如何从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
64jmpszr1#
对于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
(note INFORMATION_SCHEMA是QSYS 2的同义词)目录视图的完整列表如下:http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/topic/db2/rbafzcatalog.htm
lp0sw83n2#
此信息可在表syscat.columns中找到。
syscat.columns
uajslkp63#
另一种方法是从Linux bash shell执行db2命令:
$ db2 "DESCRIBE TABLE A" |awk '{printf "%s\t",$1} END{print}'
1qczuiv04#
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 connection---------- 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); }
4条答案
按热度按时间64jmpszr1#
对于DB2 for i,此信息位于
ODBC/JDBC和DB2 LUW v8兼容
ANSI/ISO标准
(note INFORMATION_SCHEMA是QSYS 2的同义词)
目录视图的完整列表如下:http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/topic/db2/rbafzcatalog.htm
lp0sw83n2#
此信息可在表
syscat.columns
中找到。uajslkp63#
另一种方法是从Linux bash shell执行db2命令:
1qczuiv04#
db400(IBM i)中任意表(PF)的列名,我们可以使用java程序检索列名.示例代码: