【问题标题】:How to get the ddl of the views in sqlite?如何获取sqlite中视图的ddl?
【发布时间】:2021-08-21 19:33:57
【问题描述】:

我需要建立一个数据库的结构。我可以使用databasemetadata.getTables(null,null,"%","VIEWS");获取视图名称

但是如何获取ddl,即视图的查询呢?

【问题讨论】:

  • select sql from sqlite_schema where type = 'view'
  • 谢谢。而且我也想知道我是否可以通过jdbc元数据而不是模式表来获取它?

标签: java sql database sqlite jdbc


【解决方案1】:

databasemetadata.getTables() 的结果集中返回了 10 列,但没有一列包含视图的定义。

你可以做的是查询表sqlite_master并得到2列:namesql,它们对应于视图的名称及其定义:

String select_views = "SELECT name, sql FROM sqlite_master WHERE type = 'view';";
Statement stmt = conn.createStatement(); // conn is the connection object
ResultSet rs = stmt.executeQuery(select_views);
while (rs.next()) {
   System.out.println(rs.getString("name") + "\t" + rs.getString("sql"));
}

【讨论】:

  • 感谢您的回答。而且我也想知道我是否可以通过jdbc元数据而不是模式表来获取它?
  • 这是否完全意味着我无法通过元数据获取 ddl ?无论如何,您对 sqlite_master 的回答已经解决了我的问题,我只是想知道是否存在另一种方法。
  • @oxyuranus 不,该 ddl 不包含在 databasemetadata.getTables() 的结果集中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多