2008-09-26 19 views
13

मैं अगर यह भी है या नहीं यकीन नहीं है, तो मैं सोचा मैं दूसरों के ज्ञान का दोहन होता ..कोई जावा पुस्तकालय जो SQL वाक्यविन्यास को मान्य करता है?

अगर कोई जावा लाइब्रेरीज बाहर वहाँ है कि सत्यापन के लिए किया जा सकता है मैं सोच रहा था एक SQL क्वेरी की वाक्य - विन्यास। मुझे पता है कि सामान्य एसक्यूएल स्पेक से कई विचलन हैं, इसलिए शायद यह केवल SQL: 2006 जैसे कुछ के खिलाफ काम करेगा, लेकिन यह निश्चित रूप से पर्याप्त होगा।

मेरा लक्ष्य डीबी के खिलाफ निष्पादन की आवश्यकता के बिना इकाई परीक्षण उद्देश्यों के लिए इसका उपयोग करना है। मुझे पता है कि यह सीमित उपयोग है, लेकिन यह अभी भी उपयोगी होगा।

धन्यवाद!

+0

क्या आपको विशिष्ट विक्रेता या मानक एएनएसआई एसक्यूएल के एसक्यूएल को सत्यापित करने की आवश्यकता है? सभी प्रमुख एसक्यूएल डीबीएमएस विक्रेताओं ने एक ही समय में इसे विस्तार और कम करके इसे मानक से काफी हद तक छोड़ दिया। – Constantin

+0

यह प्रश्न रचनात्मक नहीं है ?? – rtcarlson

+0

@awied क्या आपको कभी इसके लिए अच्छा समाधान मिला? – mdewit

उत्तर

4

मुझे नहीं लगता कि ऐसे पुस्तकालय हैं। एसक्यूएल सिंटैक्स में बहुत सारे डेरिवेटिव हैं।

एक संभावित समाधान ओपन सोर्स शुद्ध जावा डीबीएमएस जैसे SmallSQL के हिस्सों का उपयोग करना होगा। इस प्रोजेक्ट में आप SQLParser का उदाहरण बना सकते हैं। कनेक्शन के लिए आवश्यक संदर्भ बहुत आसानी से हटाया जा सकता है।

+0

क्या आप किसी छोटे से एसक्यूएलक्यूएल डेवलपर हैं? – Constantin

+0

हां, मैं डेवलपर्स में से एक हूं। – Horcrux7

+0

@ Horcrux7: मैंने अभी SmallSQL डाउनलोड किया है। एसएसकनेक्शन संदर्भ को हटाने के लिए यह इतना आसान नहीं लग रहा था। ऐसा लगता है कि SQLParser वास्तविक डेटाबेस स्कीमा के विरुद्ध जांच करके SQL वाक्यविन्यास को मान्य करता है। (उदा। SQLParser.from() विधि डेटाबेस से कनेक्ट करने का प्रयास करती है)। –

1

आप HSQL से पार्सिंग कोड निकालने में सक्षम हो सकते हैं, जो जावा और ओपन सोर्स है।

4

शायद आप एंटरल का उपयोग कर सकते हैं, इसमें SQL grammars और Java library, साथ ही विभिन्न जावा आईडीई के लिए प्लगइन भी हैं।

या सलाह के रूप में, SQuirreL SQL Client जैसे ओपन सोर्स एसक्यूएल यूटिलिटीज के पार्सर का उपयोग करें।

1

Apache Derby एक खुला स्रोत SQL डेटाबेस पूरी तरह से जावा में लागू किया गया है और Apache License, Version 2.0 के तहत उपलब्ध है। इसे पहले IBM Cloudscape के नाम से जाना जाता था।

आप org.apache.derby.impl.sql से इसका पार्सिंग कोड पुन: उपयोग करने का प्रयास कर सकते हैं।

2

एसक्यूएल 4 जे जावा में लिखा गया एक एसक्यूएल-पार्सर है।

http://www.cs.toronto.edu/~jglu/sql4j/index.htm

+1

यह एक टूटा हुआ लिंक है। मुझे एक ही नाम से एक Google Code प्रोजेक्ट मिला, लेकिन इसमें कोई विकी या डाउनलोड नहीं है। –

2

JSQL parser की कोशिश करो।

मान्य करने के अतिरिक्त, आप क्वेरी का सार्थक प्रतिनिधित्व प्राप्त करते हैं।
यह आपको उदाहरण के लिए, "निश्चित" आदेशों को स्वीकार करने की अनुमति देता है;
क्वेरी, "prettify", आदि

2

JOOQ के साथ आप एसक्यूएल में कभी गलती नहीं करेंगे। जावा कंपाइलर इसका ख्याल रखेगा।

+0

यदि आप केवल एक क्वेरी बिल्डर के रूप में JOOQ का उपयोग कर रहे हैं - क्या जेनरेट किए गए SQL को प्रमाणित करने के लिए कोई ज्यूक तंत्र है (उदाहरण के लिए जूनिट टेस्ट में)? – hovanessyan

+0

@ होवनेसेन उन्हें मान्य करने की कोई आवश्यकता नहीं है, मुझे विश्वास है, क्योंकि JOOQ मान्य SQL को छोड़ देता है। –

+0

JOOQ आपको एसक्यूएल स्टेटमेंट्स लिखने की अनुमति देता है, इसलिए यदि आप कॉमा या ब्रैकेट याद करते हैं या एसक्यूएल एसएमएल अमान्य होगा। जेओयूक्यू वैध एसक्यूएल उत्सर्जित करता है यदि आप जेनरेट किए गए मॉडल वर्गों का उपयोग कर रहे हैं - मैं केवल इसे SQL बिल्डर के रूप में उपयोग कर रहा हूं और मॉडल पीढ़ी पर निर्भर नहीं हूं - इसलिए अवैध SQL उत्पन्न करना संभव है। – hovanessyan

4

General SQL Parseroffline SQL syntax check कर सकते हैं। समर्थित डेटाबेस: ओरेकल, डीबी 2, माईएसक्यूएल, एसक्यूएल सर्वर, टेराडाटा और पोस्टग्रेएसक्यूएल।

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

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