我想如何从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
答案 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}'