【发布时间】:2015-12-18 04:33:48
【问题描述】:
问题
是否有任何工具或 API 可以进行以下转换/转换?
输入: 任意复杂度的 Select 语句(例如,可以包含多个连接、联合等 pp.),例如 SELECT x, y, z FROM A LEFT JOIN B on A.p = B.p LEFT JOIN C on B.q = C.q
输出:创建所有必要表的 Create 语句。
背景:
我有 50 多个选择语句需要为其生成表。这是一项有点乏味的任务。
其他问题
我认为自动化是可能的。如果我对这个假设有误,请纠正我,并在无法自动化的情况下提供解释。我知道 Select 语句可能缺少真实数据库所拥有的信息。
【问题讨论】:
-
想想如何在逻辑上做到这一点,然后弄清楚如何构建一个复制该逻辑的 SQL 解析器(考虑函数、聚合、别名等)。这可能是可能的,但超出了范围这个论坛的。
-
这无法完成。如何找到未选择的列?如何确定 x 属于哪个表列?如何确定数据类型和各种约束?
-
@jarlh 1.) 如果未选择列,则创建语句将不包含该列(如我所说,缺少信息)。 2.) 在上面的示例语句中,
x列显然属于表A。 3.) 在上面的 Select-statement 中,由于缺少信息,Create-statements 不考虑数据类型或约束,并将所有内容创建为 varchar(例如)。 -
你怎么说“在上面的示例语句中,列 x 显然属于表 A”?列可以按任何顺序排列。
-
@DStanley 当然是在论坛之外。问题是:在 Java 或任何其他语言中是否有用于此任务的 API?
标签: sql select create-table