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

JSqlParser के साथ क्रिएट टेबल स्टेटमेंट में प्राथमिक कुंजी जोड़ना

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

JSqlParser

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

टेबल स्टेटमेंट बनाएं

CREATE TABLE College_db.Students (
 Student_id int,
 Name varchar(255),
 Course varchar(255),
 Join_date DATE
);
<पी> उपरोक्त CREATE TABLE स्टेटमेंट में, हम कॉलम Student_id जोड़ना चाहते हैं प्राथमिक कुंजी के रूप में।

JSqlParser का उपयोग करके क्रिएट टेबल SQL को पार्स करने के लिए जावा प्रोग्राम

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

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

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

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

<पी> यह हमारा इनपुट क्रिएट टेबल स्टेटमेंट है जिसमें प्राथमिक कुंजी नहीं है। नया पंक्ति वर्ण \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 के तर्क के साथ पार्स विधि को कॉल कर रहे हैं।

Statement createTable = CCJSqlParserUtil.parse(createTableSql);
<पी> पार्स विधि को निष्पादित करने के बाद, स्टेटमेंट ऑब्जेक्ट क्रिएटटेबल में जावा कक्षाओं का पदानुक्रम नीचे दिया गया है।

JSqlParser के साथ क्रिएट टेबल स्टेटमेंट में प्राथमिक कुंजी जोड़ना JSqlParser आउटपुट जावा कक्षाओं के पदानुक्रम के रूप में

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

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

System.out.println("Table Name from query: " + ((CreateTable) createTable).getTable().getName());
System.out.println("Database Name from query: " + ((CreateTable) createTable).getTable().getSchemaName());
System.out.println("\nColumns in the given insert query");
System.out.println("---------------------------------\n");
for(ColumnDefinition col: ((CreateTable) createTable).getColumnDefinitions())
{
 System.out.println(col.getColumnName() + " - " + col.getColDataType().toString());
}
//Changing the DB and table name
((CreateTable) createTable).getTable().setSchemaName("College_db_bk");
((CreateTable) createTable).getTable().setName("Students_bkup");

चरण 5:सूचकांक के रूप में प्राथमिक कुंजी बाधा बनाएँ

<पी> हम एसक्यूएल में अलग-अलग इंडेक्स सेट कर सकते हैं जैसे चेक बाधा, बहिष्कृत बाधा, विदेशी कुंजी और नामित बाधा। प्राथमिक कुंजी के लिए, हमें नीचे दिए गए अनुसार एक नामांकित बाधा बनाने की आवश्यकता है।
//Creating Primary Key constraint
NamedConstraint namedConstraint = new NamedConstraint();
namedConstraint.setType("PRIMARY KEY");
//Adding column names for the Primary Key
List<Index.ColumnParams> columns = new ArrayList<>();
Index.ColumnParams columnParams = new Index.ColumnParams("Student_id");
columns.add(columnParams);
//Setting columns in the Primary Key constraint
namedConstraint.setColumns(columns);
<पी> आइए छात्र_आईडी की प्राथमिक कुंजी को सूचकांक में नामांकित बाधा के रूप में सेट करें।

//Setting the Primary Key constraint in Index list
List<Index> indexList = new ArrayList<>();
indexList.add(namedConstraint);

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

<पी> हमें क्रिएट टेबल में इंडेक्स सूची को नीचे दिए अनुसार सेट करने की आवश्यकता है ताकि प्राइमरी कुंजी के साथ क्रिएट टेबल स्टेटमेंट तैयार किया जा सके।
((CreateTable) createTable).setIndexes(indexList);

क्रिएट टेबल SQL में प्राथमिक कुंजी जोड़ने के लिए जावा प्रोग्राम को पूरा करें

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("Adding Primary key in the CREATE TABLE statement");
 System.out.println("-------------------------------------\n");
 //Assign the input 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 {
 //Parsing Create table statement using JSqlParser
 Statement createTable = CCJSqlParserUtil.parse(createTableSql);
 //Getting the table and database name from Create table
 System.out.println("Table Name from query: " + ((CreateTable) createTable).getTable().getName());
 System.out.println("Database Name from query: " + ((CreateTable) createTable).getTable().getSchemaName());
 System.out.println("\nColumns in the given insert query");
 System.out.println("---------------------------------\n");
 for (ColumnDefinition col : ((CreateTable) createTable).getColumnDefinitions()) {
 System.out.println(col.getColumnName() + " - " + col.getColDataType().toString());
 }
 //Changing the DB and table name
 ((CreateTable) createTable).getTable().setSchemaName("College_db_bk");
 ((CreateTable) createTable).getTable().setName("Students_bkup");
 //Creating Primary Key constraint
 NamedConstraint namedConstraint = new NamedConstraint();
 namedConstraint.setType("PRIMARY KEY");
 //Adding column names for the Primary Key
 List<Index.ColumnParams> columns = new ArrayList<>();
 Index.ColumnParams columnParams = new Index.ColumnParams("Student_id");
 columns.add(columnParams);
 //Setting columns in the Primary Key constraint
 namedConstraint.setColumns(columns);
 //Setting the Primary Key constraint in Index list
 List<Index> indexList = new ArrayList<>();
 indexList.add(namedConstraint);
 //Setting the indexes in Create table statement
 ((CreateTable) createTable).setIndexes(indexList);
 System.out.println("New CREATE TABLE statement with Primary Key");
 System.out.println("---------------------------------");
 System.out.println(createTable + ";");
 } catch (JSQLParserException e) {
 throw new RuntimeException(e);
 }
 }
}
<पी> आउटपुट <पी> जैसा कि हमने नीचे दिखाया है, नई क्रिएट टेबल स्टूडेंट_आईडी की प्राथमिक कुंजी के साथ उत्पन्न होती है। साथ ही डेटाबेस और टेबल का नाम भी बदलकर कॉलेज_db_bk.Students_bkup कर दिया गया है।

Adding Primary key in the CREATE TABLE statement
-------------------------------------
Table Name from query: Students
Database Name from query: College_db
Columns in the given insert query
---------------------------------
Student_id - int
Name - varchar (255)
Course - varchar (255)
Join_date - DATE
New CREATE TABLE statement with Primary Key
---------------------------------
CREATE TABLE College_db_bk.Students_bkup (Student_id int, 
Name varchar (255), 
Course varchar (255), 
Join_date DATE, 
PRIMARY KEY (Student_id));
<पी> अनुशंसित लेख
  • अपाचे हाइव पार्सर उदाहरण

  1. सीएसएस में :लैंग छद्म वर्ग सीएसएस में :लैंग छद्म वर्ग

    CSS :lang() छद्म-वर्ग चयनकर्ता का उपयोग निर्दिष्ट लैंग विशेषता वाले तत्वों का चयन करने के लिए किया जाता है। इससे हमें सामग्री से जुड़ी एक विशिष्ट भाषा को लक्षित करने और उसके अनुसार शैली बनाने में मदद मिलती है। सिंटैक्स निम्नलिखित वाक्य रचना है - :lang(){    /*declarations*/ } आइए CSS के

  1. एचटीएमएल डोम मीटर मूल्य संपत्ति एचटीएमएल डोम मीटर मूल्य संपत्ति

    HTML DOM मीटर वैल्यू प्रॉपर्टी एलिमेंट की वैल्यू एट्रिब्यूट के अनुरूप एक नंबर लौटाती है/सेट करती है। बेहतर परिणामों के लिए इसका उपयोग उच्च, निम्न, न्यूनतम और अधिकतम विशेषताओं के साथ करें। नोट:मीटर एक प्रगति पट्टी के रूप में लेकिन केवल एक गेज के रूप में। निम्नलिखित वाक्य रचना है - मान . का रिटर्न

  1. Matplotlib पाई चार्ट में वास्तविक मूल्यों को कैसे प्रदर्शित किया जाए? Matplotlib पाई चार्ट में वास्तविक मूल्यों को कैसे प्रदर्शित किया जाए?

    Matplotlib पाई चार्ट में वास्तविक या कोई कस्टम मान प्रदर्शित करने के लिए, हम निम्नलिखित कदम उठा सकते हैं - आकृति का आकार सेट करें और सबप्लॉट के बीच और आसपास पैडिंग समायोजित करें। लेबल, भिन्न, विस्फोट की स्थिति की सूचियां बनाएं और प्रतिशत की गणना करने के लिए भिन्नों का योग प्राप्त करें लेबल, फ़्रेक