Created
March 10, 2017 16:34
-
-
Save ti-ka/d0b264324c68fb81743035d98b9cbb8c to your computer and use it in GitHub Desktop.
Revisions
-
Tika Pahadi created this gist
Mar 10, 2017 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,74 @@ /* APPENDIX 1-B: CLEANUP This makes this sql query re-run able */ DROP TABLE IF EXISTS JSON_TABLE; DROP TABLE IF EXISTS SPLIT_TABLE; DROP VIEW IF EXISTS SPLIT_VIEW; /* APPENDIX 1-B: Prepare TABLE Let's say this is an example table */ CREATE TABLE JSON_TABLE ( ID INT NOT NULL AUTO_INCREMENT, CITY VARCHAR(255) NOT NULL, POPULATION_JSON_DATA VARCHAR(1000) NOT NULL, PRIMARY KEY (ID) ); /* APPENDIX 1-C: Prepare Data Insert some data */ INSERT INTO JSON_TABLE (CITY, POPULATION_JSON_DATA) VALUES ('LONDON', '{"male" : 2000, "female" : 3000, "other" : 600}'), ('NEW YORK', '{"male" : 4000, "female" : 5000, "other" : 500}'); SELECT * FROM JSON_TABLE; /* APPENDIX 2-A: Raw Select Select Json Into Desired Columns */ SELECT ID, CITY, json_extract(POPULATION_JSON_DATA, '$.male') AS POPULATION_MALE, json_extract(POPULATION_JSON_DATA, '$.female') AS POPULATION_FEMALE, json_extract(POPULATION_JSON_DATA, '$.other') AS POPULATION_OTHER FROM JSON_TABLE; /* APPENDIX 2-B: Migration Insert to table so that you can make better use of resources: */ CREATE TABLE SPLIT_TABLE ( ID INT NOT NULL AUTO_INCREMENT, CITY VARCHAR(255) NOT NULL, MALE_POPULATION int default 0, FEMALE_POPULATION int default 0, OTHER_POPULATION int default 0, PRIMARY KEY (ID) ); INSERT INTO SPLIT_TABLE SELECT ID, CITY, json_extract(POPULATION_JSON_DATA, '$.male') AS POPULATION_MALE, json_extract(POPULATION_JSON_DATA, '$.female') AS POPULATION_FEMALE, json_extract(POPULATION_JSON_DATA, '$.other') AS POPULATION_OTHER FROM BAD_TABLE; SELECT * FROM SPLIT_TABLE; /* APPENDIX 2-C: Create View Insert to table so that you can make better use of resources: */ CREATE VIEW SPLIT_VIEW AS SELECT ID, CITY, json_extract(POPULATION_JSON_DATA, '$.male') AS POPULATION_MALE, json_extract(POPULATION_JSON_DATA, '$.female') AS POPULATION_FEMALE, json_extract(POPULATION_JSON_DATA, '$.other') AS POPULATION_OTHER FROM BAD_TABLE; SELECT * FROM SPLIT_VIEW;