2010-03-13 10 views
6

क्या कोई ओपन सोर्स लाइब्रेरीज़ (कोई भी भाषा, पायथन/पीएचपी पसंदीदा) है जो एएनएसआई एसक्यूएल स्ट्रिंग को अपने विभिन्न घटकों में टोकननाइज़/पार्स करेगा?एसक्यूएल कमांड युक्त एक स्ट्रिंग को पार्सिंग/टोकनिंग

है यही कारण है कि, अगर मैं निम्न स्ट्रिंग

SELECT a.foo, b.baz, a.bar 
FROM TABLE_A a 
LEFT JOIN TABLE_B b 
ON a.id = b.id 
WHERE baz = 'snafu'; 

था मैं वापस

//fake PHPish 
$results['select-columns'] = Array[a.foo,b.baz,a.bar]; 
$results['tables'] = Array[TABLE_A,TABLE_B]; 
$results['table-aliases'] = Array[a=>TABLE_A, b=>TABLE_B]; 
//etc... 

Restated की तरह एक डेटा संरचना/वस्तु कुछ पाने चाहते हैं, मैं एक में कोड के लिए देख रहा हूँ डेटाबेस पैकेज जो SQL कमांड को अलग करता है ताकि इंजन जानता है कि इसके साथ क्या करना है। इंटरनेट खोजना एसक्यूएल के साथ एक स्ट्रिंग को पार्स करने के तरीके पर बहुत सारे परिणाम बदल जाता है। यही वह नहीं है जो मैं चाहता हूं।

मुझे पता है मैं मैं क्या चाहते खोजने के लिए एक खुला स्रोत डेटाबेस के कोड के माध्यम से Glop सकता है, लेकिन मैं कुछ के लिए उम्मीद कर रही थी थोड़ा और तैयार कर दिया, (हालांकि आप जानते हैं कि जहां MySQL, PostgreSQL, SQLite स्रोत में करने के लिए देखो, इसे पास करने के लिए स्वतंत्र महसूस करें)

धन्यवाद!

+0

http://stackoverflow.com/questions/1394998/parsing-sql-with-python – bernie

उत्तर

2

SQLite स्रोत की फ़ाइल parse.y है जिसमें SQL के लिए व्याकरण शामिल है। व्याकरण निष्पादित करने वाले सी कोड उत्पन्न करने के लिए आप उस फ़ाइल को lemon parser generator पर भेज सकते हैं।

+0

मुझे स्रोत कोड में 'parse.y' फ़ाइल नहीं मिल रही है, इसके साथ लिंक दिमाग? –

संबंधित मुद्दे