Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso importare un file JSON nel database MySQL, utilizzando una semplice query, senza convertirlo effettivamente in altri formati di file come CSV ecc.?

Riferimento:https://dev.mysql.com /doc/refman/5.7/en/json-search-functions.html

So che questo è un thread più vecchio, ma MySQL 5.7 ora ha un tipo JSON in cui puoi importare JSON in un campo, quindi puoi utilizzare i campi calcolati per dividere il json in campi separati. Ecco un codice approssimativo (non testato):

Crea una tabella di test JSON:

CREATE TABLE IF NOT EXISTS jsontest(
     rowid INT AUTO_INCREMENT NOT NULL UNIQUE,
     jsondata json,
     `executionDateTime` TIMESTAMP,
     `A` BIGINT UNSIGNED,
     `B` BIGINT UNSIGNED,
     );

Importa il tuo JSON nel campo JSON:

LOAD DATA LOCAL INFILE '/path/to/testfile.json' into table jsontest(jsondata);

Dividi i tuoi dati su (questo potrebbe essere combinato in un unico comando)

UPDATE jsontest set executionDateTime=(jsondata->>'$.executionDateTime');
UPDATE jsontest set A=(jsondata->>'$.A');
UPDATE jsontest set B=(jsondata->>'$.B');

Se non vuoi avere campi extra, puoi interrogare il campo jsondata in questo modo:

SELECT jsondata->>"$.executionDateTime" AS executionDateTime,
       jsondata->>"$.A" AS A,
       jsondata->>"$.B" AS B;