2015-06-26 7 views
5

Jeśli mam skrypt SQL jest tam droga thru i wyodrębnić kolumny używane i tabele odwołuje się do tabeli tak:składni SQL Script, aby wyodrębnić nazwy tabel i kolumn

Scenariusz:

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 

wyjściowa:

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

Czy pytasz, czy to możliwe, czy też jest łatwy sposób? Jeśli nie możesz ograniczyć wprowadzania danych do prostego i ścisłego podzbioru gramatyki, musisz zdefiniować gramatykę dla SELECT i powiązanych z nim wyrażeń ... http://www.h2database.com/html/grammar.html#select – THK

+0

@THK Chyba jedno i drugie. Wydaje się, że dzieje się to gdzieś w procesie wykonywania sql i był ciekawy, czy ktoś zamienił go w bibliotekę. – screechOwl

+1

Nieco zaskakujące wydaje się, że nie istnieją samodzielne parsery powszechnie akceptowane jako autorytatywne. Istnieje kilka wątków SO na temat: http://stackoverflow.com/questions/660609/sql-parser-library-for-java. Python ma bibliotekę sqlparse, ale nie sprawdza poprawności gramatyki. – THK

Odpowiedz

0

to jest to, co chcesz w 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

Logika/relacje muszą zostać wyodrębnione ze skryptu/zapytania, a nie z tabel systemowych. – screechOwl

+0

Czasami nazwy kolumn nie są takie same, więc będzie to trudne. – Chuck