2015-06-26 9 views
5

Se ho uno script SQL c'è un modo per passare attraverso ed estrarre le colonne utilizzate e le tabelle di riferimento in una tabella come questa:Parse script SQL per estrarre i nomi di tabella e colonna

Script:

Select t1.first, t1.last, t2.car, t2.make, t2.year 
from owners t1 
left join cars t2 
on t1.owner_id = t2.owner_id 

uscita:

Table Column 
owners first 
owners last 
owners owner_id 
cars car 
cars make 
cars year 
cars owner_id 
+0

Stai chiedendo se è possibile o se c'è un modo semplice? A meno che tu non possa limitare l'input a un sottoinsieme semplice e rigoroso della grammatica, dovresti definire la grammatica per SELECT e le sue espressioni associate ... http://www.h2database.com/html/grammar.html#select – THK

+0

@THK Immagino entrambi. Sembra che questo succeda da qualche parte nel processo di esecuzione di SQL ed era curioso che qualcuno lo avesse trasformato in una libreria. – screechOwl

+1

Sorprendentemente, non sembrano esserci parser indipendenti ampiamente accettati come autorevoli. Ci sono alcuni thread SO sull'argomento: http://stackoverflow.com/questions/660609/sql-parser-library-for-java. Python ha la libreria sqlparse ma non convalida la grammatica. – THK

risposta

0

Questo è ciò che si desidera in SQL Server:

select t.name as [Table], c.name as [Column] 
 
from sys.columns c 
 
inner join sys.tables t 
 
on c.object_id = t.object_id

+0

La logica/le relazioni devono essere estratte dallo script/query stessa, non dalle tabelle di sistema. – screechOwl

+0

A volte i nomi delle colonne non sono gli stessi, quindi sarà difficile. – Chuck

Problemi correlati