Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je importer un fichier JSON dans la base de données MySQL, à l'aide d'une simple requête, sans le convertir en d'autres formats de fichier tels que CSV, etc. ?

Référence :https://dev.mysql.com /doc/refman/5.7/en/json-search-functions.html

Je sais que c'est un thread plus ancien, mais MySQL 5.7 a maintenant un type JSON où vous pouvez importer JSON dans un champ, puis vous pouvez utiliser des champs calculés pour diviser le json en champs séparés. Voici un code approximatif (non testé) :

Créez une table de 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,
     );

Importez votre JSON dans le champ JSON :

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

Divisez vos données (cela pourrait être combiné en une seule commande)

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

Si vous ne souhaitez pas avoir de champs supplémentaires, vous pouvez interroger le champ jsondata comme ceci :

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