|
| 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