2015-06-26 24 views
5

Bir SQL komut var geçmesi ve böyle bir tabloya atıfta kullanılan sütunları ve tabloları ayıklamak için bir yol varsa:Ayrıştırma SQL komut tablo ve sütun adlarını ayıklamak için

Senaryo:

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 

Çıktı:

:

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

bunu kolay bir yol olup olmadığını mümkündür ya soran var mı? Girdiyi dilbilgisinin basit ve katı bir alt kümesiyle sınırlayamazsanız, SELECT ve onun ilişkili ifadeleri için dilbilgisini tanımlamanız gerekir ... http://www.h2database.com/html/grammar.html#select – THK

+0

@THK Ben her ikisini de tahmin ediyorum. Sadece bu, sql yürütme işleminde bir yerde olur ve birisi bir kütüphaneye dönüştürmüş olsaydı merak ediyor gibi görünüyor. – screechOwl

+1

Şaşırtıcı bir şekilde, yetkili olarak geniş çapta kabul edilen bağımsız bir ayrıştırıcı görünmüyor. Konuyla ilgili bazı SO konuları var: http://stackoverflow.com/questions/660609/sql-parser-library-for-java. Python, sqlparse kütüphanesine sahiptir ancak dilbilgisini doğrulamamaktadır. – THK

cevap

0

Bu SQL Server istediğim şey

+0

Mantık/ilişkilerin, sistem tablolarını değil, komut dosyasından/sorgudan çıkarılması gerekir. – screechOwl

+0

Bazen sütunların adları aynı değildir, bu yüzden zor olacaktır. – Chuck

İlgili konular