sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag importera en JSON-fil till MySQL-databasen, med en enkel fråga, utan att faktiskt konvertera den till några andra filformat som CSV etc.?

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

Jag vet att detta är en äldre tråd, men MySQL 5.7 har nu en JSON-typ där du kan importera JSON till ett fält, sedan kan du använda beräknade fält för att dela upp json i separata fält. Här är grov kod (ej testad):

Skapa en JSON-testtabell:

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

Importera din JSON till JSON-fältet:

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

Dela upp dina data (detta kan kombineras till ett enda kommando)

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

Om du inte vill ha extra fält kan du fråga jsondata-fältet så här:

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


  1. Escape MYSQL kommandorader via Bash Scripting

  2. Hur vet jag om min PostgreSQL-säkerhetskopia är bra?

  3. MySQL-GRUPP Antal

  4. Hur man rundar tidsstämpel i MySQL