sql >> Database >  >> RDS >> Mysql

Hoe kan ik een JSON-bestand in de MySQL-database importeren met een eenvoudige query, zonder het daadwerkelijk te converteren naar andere bestandsindelingen zoals CSV enz.?

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

Ik weet dat dit een oudere thread is, maar MySQL 5.7 heeft nu een JSON-type waar je JSON in een veld kunt importeren, waarna je berekende velden kunt gebruiken om de json in afzonderlijke velden te splitsen. Hier is een ruwe code (niet getest):

Maak een JSON-testtabel:

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

Importeer uw JSON in het JSON-veld:

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

Splits uw gegevens op (dit kan worden gecombineerd in een enkele opdracht)

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

Als u geen extra velden wilt hebben, kunt u het jsondata-veld als volgt opvragen:

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


  1. Wat is het doel van het gebruik van mysql_secure_installation?

  2. Een MariaDB-database verplaatsen naar versleutelde en niet-versleutelde toestanden

  3. Java Unit Testing verkennen met het JUnit Test Framework

  4. Converteer een tekenreeks met scheidingstekens naar rijen in orakel