Skip to content

Commit 3e3cc0e

Browse files
committed
2 parents 80850f9 + fc82899 commit 3e3cc0e

File tree

1 file changed

+329
-0
lines changed

1 file changed

+329
-0
lines changed

README.md

Lines changed: 329 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,329 @@
1+
# JSON to SQL parser
2+
org.json.JSONObject to SQL parser using [**JsqlParser**](https://github.com/JSQLParser/JSqlParser)<br>
3+
Interact with [**SqlToJsonParser**](https://github.com/inzapp/sql-to-json-parser)<br>
4+
5+
## Download
6+
https://github.com/inzapp/json-to-sql-parser/releases
7+
8+
## Usage
9+
Run as default file name
10+
Default input file name : input.json
11+
Default output file name : output.txt
12+
```bash
13+
$ java -jar json-to-sql-parser.jar
14+
```
15+
16+
Run as specified file name
17+
```bash
18+
$ java -jar json-to-sql-parser.jar yourInputFileName yourOutputFileName
19+
```
20+
21+
In Java
22+
```java
23+
JsonToSqlParser jsonToSqlParser = new JsonToSqlParser();
24+
String sql = jsonToSqlParser.parse(jsonObject);
25+
```
26+
27+
## Select
28+
input
29+
```json
30+
{
31+
"CRUD": ["SELECT"],
32+
"COLUMN": ["*"],
33+
"TABLE": ["TAB"]
34+
}
35+
```
36+
37+
output
38+
```sql
39+
SELECT * FROM TAB
40+
```
41+
42+
## Insert
43+
input
44+
```json
45+
{
46+
"CRUD": ["INSERT"],
47+
"TABLE": ["TABLENAME"],
48+
"VALUE": ["'TESTVALUE'"]
49+
}
50+
```
51+
52+
output
53+
```sql
54+
INSERT INTO TABLENAME VALUES ('TESTVALUE')
55+
```
56+
57+
## Update
58+
input
59+
```json
60+
{
61+
"CRUD": ["UPDATE"],
62+
"COLUMN": ["COLNAME"],
63+
"TABLE": ["TABLENAME"],
64+
"VALUE": ["1"],
65+
"WHERE": ["CONDITION = 2"]
66+
}
67+
```
68+
69+
output
70+
```sql
71+
UPDATE TABLENAME SET COLNAME = 1 WHERE CONDITION = 2
72+
```
73+
74+
## Delete
75+
input
76+
```json
77+
{
78+
"CRUD": ["DELETE"],
79+
"TABLE": ["TABLE"],
80+
"WHERE": ["CONDITION = 'ALL'"]
81+
}
82+
```
83+
84+
output
85+
```sql
86+
DELETE FROM TABLE WHERE CONDITION = 'ALL'
87+
```
88+
89+
## Sub Query
90+
input
91+
```json
92+
{
93+
"CRUD": ["SELECT"],
94+
"COLUMN": [
95+
"A",
96+
"B"
97+
],
98+
"TABLE": ["(SELECT A, B FROM FROMTABLE WHERE SUBCONDITION = 'SUBCONDITION')"],
99+
"TABLE SUB QUERY 1": ["(SELECT A, B FROM FROMTABLE WHERE FROMCONDITION = 'FROMCONDITION')"],
100+
"TABLE SUB QUERY ANALYSE 1": {
101+
"CRUD": ["SELECT"],
102+
"COLUMN": [
103+
"A",
104+
"B"
105+
],
106+
"TABLE": ["FROMTABLE"],
107+
"WHERE": ["FROMCONDITION = 'FROMCONDITION'"]
108+
},
109+
"WHERE": ["C = (SELECT C FROM WHERETABLE WHERE WHERECONDITION = 'WHERECONDITION')"],
110+
"WHERE SUB QUERY 1": ["(SELECT C FROM WHERETABLE WHERE WHERECONDITION = 'WHERECONDITION')"],
111+
"WHERE SUB QUERY ANALYSE 1": {
112+
"CRUD": ["SELECT"],
113+
"COLUMN": ["C"],
114+
"TABLE": ["WHERETABLE"],
115+
"WHERE": ["WHERECONDITION = 'WHERECONDITION'"]
116+
},
117+
"ORDER_BY": ["A"]
118+
}
119+
```
120+
121+
output
122+
```sql
123+
SELECT A, B FROM
124+
(
125+
SELECT A, B
126+
FROM FROMTABLE
127+
WHERE SUBCONDITION = 'SUBCONDITION'
128+
)
129+
WHERE C =
130+
(
131+
SELECT C
132+
FROM WHERETABLE
133+
WHERE WHERECONDITION = 'WHERECONDITION'
134+
) ORDER BY A
135+
```
136+
137+
## Join and Alias
138+
input
139+
```json
140+
{
141+
"CRUD": ["SELECT"],
142+
"COLUMN": [
143+
"A.a",
144+
"C.b",
145+
"E.c"
146+
],
147+
"JOIN 1": ["LEFT OUTER JOIN table_resource C ON A.select_id = C.select_id"],
148+
"JOIN 2": [
149+
"INNER JOIN item D ON A.id = D.id",
150+
"INNER JOIN table_item E ON D.c = E.c"
151+
],
152+
"JOIN ALIAS 1": ["C"],
153+
"JOIN ALIAS 2": [
154+
"D",
155+
"E"
156+
],
157+
"TABLE": ["(SELECT A.a, A.select_id, B.id FROM table A INNER JOIN joinTable B ON A.id = B.id INNER JOIN joinTable2 C ON B.id2 = C.id2 WHERE A.yn = 'Y' AND C.id2 = 'id' AND A.select_id = (SELECT select_id FROM selector_table WHERE c_name = 'con_name' AND gateway = 'gateway' AND CONTAINER = 'container')) A"],
158+
"TABLE ALIAS": ["A"],
159+
"TABLE SUB QUERY 1": ["(SELECT A.a, A.select_id, B.id FROM table A INNER JOIN joinTable B ON A.id = B.id INNER JOIN joinTable2 C ON B.id2 = C.id2 WHERE A.yn = 'Y' AND C.id2 = 'id' AND A.select_id = (SELECT select_id FROM selector_table WHERE c_name = 'con_name' AND gateway = 'gateway' AND CONTAINER = 'container'))"],
160+
"TABLE SUB QUERY ANALYSE 1": {
161+
"CRUD": ["SELECT"],
162+
"COLUMN": [
163+
"A.a",
164+
"A.select_id",
165+
"B.id"
166+
],
167+
"JOIN 1": ["INNER JOIN joinTable B ON A.id = B.id"],
168+
"JOIN 2": ["INNER JOIN joinTable2 C ON B.id2 = C.id2"],
169+
"JOIN ALIAS 1": ["B"],
170+
"JOIN ALIAS 2": ["C"],
171+
"TABLE": ["table A"],
172+
"TABLE ALIAS": ["A"],
173+
"WHERE": ["A.yn = 'Y' AND C.id2 = 'id' AND A.select_id = (SELECT select_id FROM selector_table WHERE c_name = 'con_name' AND gateway = 'gateway' AND CONTAINER = 'container')"],
174+
"WHERE SUB QUERY 1": ["(SELECT select_id FROM selector_table WHERE c_name = 'con_name' AND gateway = 'gateway' AND CONTAINER = 'container')"],
175+
"WHERE SUB QUERY ANALYSE 1": {
176+
"CRUD": ["SELECT"],
177+
"COLUMN": ["select_id"],
178+
"TABLE": ["selector_table"],
179+
"WHERE": ["c_name = 'con_name' AND gateway = 'gateway' AND CONTAINER = 'container'"]
180+
}
181+
}
182+
}
183+
```
184+
185+
output
186+
```sql
187+
SELECT A.a, C.b, E.c
188+
FROM
189+
(
190+
SELECT A.a, A.select_id, B.id
191+
FROM
192+
table A
193+
INNER JOIN joinTable B ON A.id = B.id
194+
INNER JOIN joinTable2 C ON B.id2 = C.id2
195+
WHERE A.yn = 'Y' AND
196+
C.id2 = 'id' AND
197+
A.select_id =
198+
(
199+
SELECT select_id
200+
FROM selector_table
201+
WHERE c_name = 'con_name' AND
202+
gateway = 'gateway' AND
203+
CONTAINER = 'container'
204+
)
205+
) A
206+
LEFT OUTER JOIN table_resource C ON A.select_id = C.select_id
207+
INNER JOIN item D ON A.id = D.id
208+
INNER JOIN table_item E ON D.c = E.c
209+
```
210+
211+
## Union
212+
input
213+
```json
214+
{
215+
"CRUD": ["SELECT"],
216+
"COLUMN": ["*"],
217+
"TABLE": ["(SELECT A, B, C FROM SUBQUERYTABLE WHERE CONDITION IN ('A', 'B', 'C') AND CONDITION IN (SELECT CONDITION FROM ANOTHER UNION SELECT CONDITION FROM UNIONTABLE))"],
218+
"TABLE SUB QUERY 1": ["(SELECT A, B, C FROM SUBQUERYTABLE WHERE CONDITION IN ('A', 'B', 'C') AND CONDITION IN (SELECT CONDITION FROM ANOTHER UNION SELECT CONDITION FROM UNIONTABLE))"],
219+
"TABLE SUB QUERY ANALYSE 1": {
220+
"CRUD": ["SELECT"],
221+
"COLUMN": [
222+
"A",
223+
"B",
224+
"C"
225+
],
226+
"TABLE": ["SUBQUERYTABLE"],
227+
"WHERE": ["CONDITION IN ('A', 'B', 'C') AND CONDITION IN (SELECT CONDITION FROM ANOTHER UNION SELECT CONDITION FROM UNIONTABLE)"],
228+
"WHERE SUB QUERY 1": ["(SELECT CONDITION FROM ANOTHER UNION SELECT CONDITION FROM UNIONTABLE)"],
229+
"WHERE SUB QUERY ANALYSE 1": {
230+
"CRUD": ["SELECT"],
231+
"COLUMN": ["CONDITION"],
232+
"TABLE": ["ANOTHER"],
233+
"UNION 1": ["SELECT CONDITION FROM UNIONTABLE"],
234+
"UNION ANALYSE 1": {
235+
"CRUD": ["SELECT"],
236+
"COLUMN": ["CONDITION"],
237+
"TABLE": ["UNIONTABLE"]
238+
}
239+
}
240+
},
241+
"UNION ALL 1": ["SELECT DISTINCT VAL FROM ((SELECT FIELD1 AS VAL FROM TABLE1 WHERE CONDITION1 = 'CONDITION1') UNION ALL (SELECT FIELD2 FROM TABLE1 WHERE CONDITION2 = 'CONDITION2') UNION ALL (SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3') UNION ALL (SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3')) T"],
242+
"UNION ALL ANALYSE 1": {
243+
"CRUD": ["SELECT"],
244+
"DISTINCT": ["TRUE"],
245+
"COLUMN": ["VAL"],
246+
"TABLE": ["((SELECT FIELD1 AS VAL FROM TABLE1 WHERE CONDITION1 = 'CONDITION1') UNION ALL (SELECT FIELD2 FROM TABLE1 WHERE CONDITION2 = 'CONDITION2') UNION ALL (SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3') UNION ALL (SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3')) T"],
247+
"TABLE ALIAS": ["T"],
248+
"TABLE SUB QUERY 1": ["((SELECT FIELD1 AS VAL FROM TABLE1 WHERE CONDITION1 = 'CONDITION1') UNION ALL (SELECT FIELD2 FROM TABLE1 WHERE CONDITION2 = 'CONDITION2') UNION ALL (SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3') UNION ALL (SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3'))"],
249+
"TABLE SUB QUERY ANALYSE 1": {
250+
"CRUD": ["SELECT"],
251+
"COLUMN": ["FIELD1 AS VAL"],
252+
"TABLE": ["TABLE1"],
253+
"UNION ALL 1": ["SELECT FIELD2 FROM TABLE1 WHERE CONDITION2 = 'CONDITION2'"],
254+
"UNION ALL 2": ["SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3'"],
255+
"UNION ALL 3": ["SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3'"],
256+
"UNION ALL ANALYSE 1": {
257+
"CRUD": ["SELECT"],
258+
"COLUMN": ["FIELD2"],
259+
"TABLE": ["TABLE1"],
260+
"WHERE": ["CONDITION2 = 'CONDITION2'"]
261+
},
262+
"UNION ALL ANALYSE 2": {
263+
"CRUD": ["SELECT"],
264+
"COLUMN": ["FIELD3"],
265+
"TABLE": ["TABLE3"],
266+
"WHERE": ["CONDITION3 = 'CONDITION3'"]
267+
},
268+
"UNION ALL ANALYSE 3": {
269+
"CRUD": ["SELECT"],
270+
"COLUMN": ["FIELD3"],
271+
"TABLE": ["TABLE3"],
272+
"WHERE": ["CONDITION3 = 'CONDITION3'"]
273+
},
274+
"WHERE": ["CONDITION1 = 'CONDITION1'"]
275+
}
276+
}
277+
}
278+
```
279+
280+
output
281+
```sql
282+
(
283+
SELECT *
284+
FROM
285+
(
286+
SELECT A, B, C
287+
FROM SUBQUERYTABLE
288+
WHERE CONDITION IN ('A', 'B', 'C')
289+
AND CONDITION IN
290+
(
291+
SELECT CONDITION
292+
FROM ANOTHER
293+
UNION
294+
SELECT CONDITION
295+
FROM UNIONTABLE
296+
)
297+
)
298+
)
299+
UNION ALL
300+
(
301+
SELECT DISTINCT VAL
302+
FROM
303+
(
304+
(
305+
SELECT FIELD1 AS VAL
306+
FROM TABLE1
307+
WHERE CONDITION1 = 'CONDITION1'
308+
)
309+
UNION ALL
310+
(
311+
SELECT FIELD2
312+
FROM TABLE1
313+
WHERE CONDITION2 = 'CONDITION2'
314+
)
315+
UNION ALL
316+
(
317+
SELECT FIELD3
318+
FROM TABLE3
319+
WHERE CONDITION3 = 'CONDITION3'
320+
)
321+
UNION ALL
322+
(
323+
SELECT FIELD3
324+
FROM TABLE3
325+
WHERE CONDITION3 = 'CONDITION3'
326+
)
327+
) T
328+
)
329+
```

0 commit comments

Comments
 (0)