Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich eine JSON-Datei mit einer einfachen Abfrage in die MySQL-Datenbank importieren, ohne sie tatsächlich in andere Dateiformate wie CSV usw. zu konvertieren?

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

Ich weiß, dass dies ein älterer Thread ist, aber MySQL 5.7 hat jetzt einen JSON-Typ, bei dem Sie JSON in ein Feld importieren können, dann können Sie berechnete Felder verwenden, um den JSON in separate Felder aufzuteilen. Hier ist grober Code (nicht getestet):

Erstellen Sie eine JSON-Testtabelle:

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

Importieren Sie Ihren JSON in das JSON-Feld:

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

Teilen Sie Ihre Daten auf (dies könnte in einem einzigen Befehl kombiniert werden)

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

Wenn Sie keine zusätzlichen Felder haben möchten, können Sie das jsondata-Feld wie folgt abfragen:

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