从Select-Statements重构Create-Table语句

时间:2015-09-21 12:57:45

标签: sql select create-table

问题

是否有任何工具或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语句,我需要为其生成表格。这是一个单调乏味的任务。

其他问题

我认为可以实现自动化。如果我对这个假设有误,请纠正我,并在无法自动化的情况下提供解释。我知道Select语句可能缺少真实数据库所具有的信息。

1 个答案:

答案 0 :(得分:2)

这样做的问题在于您没有相关信息来创建表格。你必须做出很多假设

您缺少以下信息:

  • 数据类型CHAR(10), INT, BIT
  • 约束NOT NULL, DEFAULT()
  • 索引信息

...这只是一个开始,并不是每个查询都会列出所有字段,你可能会发现在下次引用表时你错过了什么 - 那你做什么?

这样做的唯一方法就是如果你有非常的脚本编码标准。 例如:

  • 所有名为Modified的列都属于DATETIME NOT NULL
  • 类型
  • 所有主键都采用表格的名称和ID,例如。 TablenameID INT IDENTITY(1,1) PRIMARY KEY NOT NULL(您也可以使用CONSTRAINT选项创建具有特定名称的密钥)

......你明白了。

我会咬紧牙关并手动继续。

修改

这里真正的问题是你为什么这样做?当然,查询是针对现有数据库创建的吗?

您是从一个RDBMS迁移到另一个吗?