【发布时间】:2014-02-26 18:32:28
【问题描述】:
我有一个要求,我在表单中有查询:
select tab1.col1 as column1, tab2.col1 as column1
from table1 tab1 inner join table2 tab2 on tab1.key1=tab2.key2
我想从中得到三样东西:
table1|col1|column1
table2|col2|comumn2
如果可能的话,我还想获取所选列的数据类型。
我知道这可以手动完成,但我有超过 2000 个选择查询,每个查询都获取超过 100 个字段。因此,这项工作变得无聊且耗时。
关于如何实现自动化的任何想法。我有 oracle SQL 开发人员,如果它适合我的工作,我什至可以编写 UNIX shell 脚本。
【问题讨论】:
-
所有的查询都这么简单吗?没有子查询,没有内联查询,没有区分大小写的标识符等?确切地说,您在哪里有疑问?是否有 SQL 语句表?还是需要从存储过程中解析出SQL语句?
-
没有查询没有这么简单。有多个连接和 where 条件,但这不应该打扰我们,因为我们只需要 select 子句中的字段。在极少数情况下,查询的 select 子句中有一些函数,例如 to_char 或 upper。所有这些查询都存储在 UNiX 的一个目录中的单独 sql 文件中(每个文件一个查询)
-
好吧,您似乎想要来自
FROM子句的表名,因此您需要对其进行解析。您需要支持哪些 SQL 子集?内联查询?连接中的子查询?多层别名子查询? -
我在这里看不到任何内联查询和子查询。查询虽然简单但很大。是的,我的问题是,一旦我知道别名,如何从 FROM 子句中获取表名,以及如何找到原始列名。我想过使用 select 语句创建一个临时表,该语句将创建一个具有别名列名和数据类型的表。但是在这里我丢失了原始的表名和列名。
标签: sql unix oracle-sqldeveloper sql-parser