Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

JSqlParser के साथ CREATE TABLE स्टेटमेंट में प्राइमरी की जोड़ना

पार्सर एक प्रोग्राम है जो शब्दों/वाक्यों के अनुक्रम के व्याकरण को समझता है और वाक्यात्मक ट्री प्रतिनिधित्व उत्पन्न करता है। इसका उपयोग प्रोग्रामिंग भाषाओं, प्राकृतिक भाषा प्रसंस्करण, SQL और इत्यादि जैसे कई क्षेत्रों में किया जाता है। पार्सर के उपयोग को प्रदर्शित करने के लिए, हम इस ट्यूटोरियल में ओपन सोर्स JSqlParser का संदर्भ लेने जा रहे हैं।

JSqlParser

JSqlParser एक SQL स्टेटमेंट पार्सर है जो Github पर ओपन सोर्स के रूप में उपलब्ध है। यह एक SQL स्टेटमेंट को पार्स करता है और इसे Java क्लासेस के पदानुक्रम में अनुवादित करता है। निम्नलिखित उदाहरण में, हम JSqlParser का उपयोग करके CREATE TABLE स्टेटमेंट को पार्स करने जा रहे हैं। आइए CREATE TABLE स्टेटमेंट को पार्स करने और उसमें प्राइमरी की जोड़ने के लिए एक Java प्रोग्राम लिखें।

CREATE TABLE स्टेटमेंट

CREATE TABLE College_db.Students (
    Student_id int,
    Name varchar(255),
    Course varchar(255),
    Join_date DATE
);

उपरोक्त CREATE TABLE स्टेटमेंट में, हम Column Student_id को प्राइमरी की के रूप में जोड़ना चाहते हैं।

JSqlParser का उपयोग करके CREATE TABLE SQL को पार्स करने के लिए Java प्रोग्राम

चरण 1: JSqlParser को निर्भरता के रूप में जोड़ना

हम JSqlParser को निर्भरता के रूप में जोड़ने के लिए एक मेवेन प्रोजेक्ट बना रहे हैं। आइए pom.xml फाइल में नीचे दी गई निर्भरता जोड़ें।

<dependency>
    <groupId>com.github.jsqlparser</groupId>
    <artifactId>jsqlparser</artifactId>
    <version>4.2</version>
</dependency>

चरण 2: इनपुट CREATE TABLE स्टेटमेंट को एक वेरिएबल में असाइन करें

यह हमारा इनपुट CREATE TABLE स्टेटमेंट है जिसमें प्राइमरी की नहीं है। नई लाइन कैरेक्टर \n वैकल्पिक है। हम पूर्ण SQL को एक ही लाइन में भी दे सकते हैं। पठनीयता के उद्देश्य से, हम इनपुट को मल्टी-लाइन में दे रहे हैं।

String createTableSql = "CREATE TABLE College_db.Students (\n"
    + " Student_id int,\n"
    + " Name varchar(255),\n"
    + " Course varchar(255),\n"
    + " Join_date DATE\n"
    + ");";

चरण 3: JSqlParser का उपयोग करके SQL पार्स करें

पार्सर यूटिल क्लास CCJSqlParserUtil का उपयोग करके, हम CREATE TABLE sql के तर्क के साथ parse मेथड को कॉल कर रहे हैं।

Statement createTable = CCJSqlParserUtil.parse(createTableSql);

parse मेथड निष्पादित होने के बाद, Statement ऑब्जेक्ट createTable में नीचे दिखाए अनुसार Java क्लासेस का पदानुक्रम होता है।

JSqlParser के साथ CREATE TABLE स्टेटमेंट में प्राइमरी की जोड़नाJSqlParser आउटपुट Java क्लासेस के पदानुक्रम के रूप में

चरण 4: पार्सर आउटपुट का अन्वेषण करें

यदि parse मेथड सफलतापूर्वक निष्पादित होता है, तो हम CREATE TABLE स्टेटमेंट के बारे में सभी जानकारी प्राप्त कर सकते हैं। आइए स्टेटमेंट के डेटाबेस/टेबल नाम और कॉलम परिभाषा प्राप्त करें। साथ ही हम CREATE TABLE स्टेटमेंट में डेटाबेस और टेबल नाम बदल रहे हैं।

System.out.println("क्वेरी से टेबल नाम: " + ((CreateTable) createTable).getTable().getName());
System.out.println("क्वेरी से डेटाबेस नाम: " + ((CreateTable) createTable).getTable().getSchemaName());
System.out.println("\nदिए गए इंसर्ट क्वेरी में कॉलम");
System.out.println("---------------------------------\n");
for(ColumnDefinition col: ((CreateTable) createTable).getColumnDefinitions())
{
    System.out.println(col.getColumnName() + " - " + col.getColDataType().toString());
}

// DB और टेबल नाम बदलना
((CreateTable) createTable).getTable().setSchemaName("College_db_bk");
((CreateTable) createTable).getTable().setName("Students_bkup");

चरण 5: इंडेक्स के रूप में प्राइमरी की कंस्ट्रेंट बनाएं

हम SQL पर अलग-अलग इंडेक्स सेट कर सकते हैं जैसे चेक कंस्ट्रेंट, एक्सक्लूड कंस्ट्रेंट, फॉरेन की और नेम्ड कंस्ट्रेंट। प्राइमरी की के लिए, हमें नीचे दिखाए अनुसार एक नेम्ड कंस्ट्रेंट बनाने की आवश्यकता है।

// प्राइमरी की कंस्ट्रेंट बनाना
NamedConstraint namedConstraint = new NamedConstraint();
namedConstraint.setType("PRIMARY KEY");

// प्राइमरी की के लिए कॉलम नाम जोड़ना
List<Index.ColumnParams> columns = new ArrayList<>();
Index.ColumnParams columnParams = new Index.ColumnParams("Student_id");
columns.add(columnParams);

// प्राइमरी की कंस्ट्रेंट में कॉलम सेट करना
namedConstraint.setColumns(columns);

आइए Student_id की प्राइमरी की को इंडेक्स में नेम्ड कंस्ट्रेंट के रूप में सेट करें।

// इंडेक्स सूची में प्राइमरी की कंस्ट्रेंट सेट करना
List<Index> indexList = new ArrayList<>();
indexList.add(namedConstraint);

चरण 6: CREATE TABLE स्टेटमेंट में इंडेक्स सेट करें

हमें CREATE TABLE स्टेटमेंट में इंडेक्स सूची सेट करने की आवश्यकता है ताकि CREATE TABLE स्टेटमेंट प्राइमरी की के साथ उत्पन्न हो।

((CreateTable) createTable).setIndexes(indexList);

CREATE TABLE SQL में प्राइमरी की जोड़ने के लिए पूर्ण Java प्रोग्राम

import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.create.table.ColumnDefinition;
import net.sf.jsqlparser.statement.create.table.CreateTable;
import net.sf.jsqlparser.statement.create.table.Index;
import net.sf.jsqlparser.statement.create.table.NamedConstraint;
import java.util.ArrayList;
import java.util.List;

public class AddPrimaryKey
{
    public static void main(String[] args)
    {
        System.out.println("CREATE TABLE स्टेटमेंट में प्राइमरी की जोड़ना");
        System.out.println("-------------------------------------\n");
        
        // इनपुट CREATE TABLE SQL असाइन करें
        String createTableSql = "CREATE TABLE College_db.Students (\n"
            + " Student_id int,\n"
            + " Name varchar(255),\n"
            + " Course varchar(255),\n"
            + " Join_date DATE\n"
            + ");";
        
        try
        {
            // JSqlParser का उपयोग करके Create table स्टेटमेंट पार्स करना
            Statement createTable = CCJSqlParserUtil.parse(createTableSql);
            
            // Create table से टेबल और डेटाबेस नाम प्राप्त करना
            System.out.println("क्वेरी से टेबल नाम: " + ((CreateTable) createTable).getTable().getName());
            System.out.println("क्वेरी से डेटाबेस नाम: " + ((CreateTable) createTable).getTable().getSchemaName());
            System.out.println("\nदिए गए इंसर्ट क्वेरी में कॉलम");
            System.out.println("---------------------------------\n");
            
            for (ColumnDefinition col : ((CreateTable) createTable).getColumnDefinitions())
            {
                System.out.println(col.getColumnName() + " - " + col.getColDataType().toString());
            }
            
            // DB और टेबल नाम बदलना
            ((CreateTable) createTable).getTable().setSchemaName("College_db_bk");
            ((CreateTable) createTable).getTable().setName("Students_bkup");
            
            // प्राइमरी की कंस्ट्रेंट बनाना
            NamedConstraint namedConstraint = new NamedConstraint();
            namedConstraint.setType("PRIMARY KEY");
            
            // प्राइमरी की के लिए कॉलम नाम जोड़ना
            List<Index.ColumnParams> columns = new ArrayList<>();
            Index.ColumnParams columnParams = new Index.ColumnParams("Student_id");
            columns.add(columnParams);
            
            // प्राइमरी की कंस्ट्रेंट में कॉलम सेट करना
            namedConstraint.setColumns(columns);
            
            // इंडेक्स सूची में प्राइमरी की कंस्ट्रेंट सेट करना
            List<Index> indexList = new ArrayList<>();
            indexList.add(namedConstraint);
            
            // Create table स्टेटमेंट में इंडेक्स सेट करना
            ((CreateTable) createTable).setIndexes(indexList);
            
            System.out.println("प्राइमरी की के साथ नया CREATE TABLE स्टेटमेंट");
            System.out.println("---------------------------------");
            System.out.println(createTable + ";");
        }
        catch (JSQLParserException e)
        {
            throw new RuntimeException(e);
        }
    }
}

आउटपुट

जैसा कि हम नीचे दिखाते हैं, Student_id की प्राइमरी की के साथ नया CREATE TABLE उत्पन्न होता है। साथ ही डेटाबेस और टेबल नाम College_db_bk.Students_bkup में बदल जाता है।

प्राइमरी की के साथ CREATE TABLE स्टेटमेंट जोड़ना
-------------------------------------
क्वेरी से टेबल नाम: Students
क्वेरी से डेटाबेस नाम: College_db
दिए गए इंसर्ट क्वेरी में कॉलम
---------------------------------
Student_id - int
Name - varchar (255)
Course - varchar (255)
Join_date - DATE
प्राइमरी की के साथ नया CREATE TABLE स्टेटमेंट
---------------------------------
CREATE TABLE College_db_bk.Students_bkup (Student_id int, Name varchar (255), Course varchar (255), Join_date DATE, PRIMARY KEY (Student_id));

अनुशंसित लेख

  • Apache Hive पार्सर उदाहरण
  1. Android में लिंक्ड लिस्ट को कैसे रिवर्स करें? Android में लिंक्ड लिस्ट को कैसे रिवर्स करें?

    Android में लिंक्ड लिस्ट को रिवर्स करना यह उदाहरण दर्शाता है कि Android में लिंक्ड लिस्ट को कैसे रिवर्स (उल्टा) किया जाता है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project पर जाएं और आवश्यक विवरण भरकर एक नया प्रोजेक्ट बनाएं। चरण 2: लेआउट XML में कोड जोड़ें res/layout/activity_ma

  1. C++ में बाइनरी ट्री की सीमा C++ में बाइनरी ट्री की सीमा

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें इसके सीमा के मानों को रूट से शुरू करके वामावर्त दिशा में ढूंढना है। यहां सीमा में बायां सीमा, पत्ते, और दायां सीमा क्रम में बिना डुप्लिकेट नोड्स के शामिल हैं। बायां सीमा रूट से बाएं-सबसे नोड तक का पथ है। दायां सीमा रूट से दाएं-सबसे नोड तक का पथ है। जब रू

  1. Matplotlib में स्कैटर प्लॉट के लिए औसत रेखा कैसे ड्रॉ करें? Matplotlib में स्कैटर प्लॉट के लिए औसत रेखा कैसे ड्रॉ करें?

    Matplotlib में प्लॉट के लिए औसत रेखा ड्रॉ करने के लिए निम्नलिखित चरणों का पालन करें: चरण फिगर का आकार सेट करें और सबप्लॉट्स के बीच पैडिंग एडजस्ट करें। NumPy का उपयोग करके x और y डेटा पॉइंट्स बनाएं। subplots() मेथड का उपयोग करके फिगर और सबप्लॉट्स का सेट बनाएं। plot() मेथड का उपयोग करके x और y डेटा