Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso importar um arquivo JSON para o banco de dados MySQL, usando uma consulta simples, sem convertê-lo em outros formatos de arquivo, como CSV, etc.?


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

Eu sei que este é um thread mais antigo, mas o MySQL 5.7 agora tem um tipo JSON onde você pode importar JSON em um campo, então você pode usar campos calculados para dividir o json em campos separados. Aqui está o código bruto (não testado):

Crie uma tabela de teste JSON:
CREATE TABLE IF NOT EXISTS jsontest(
     rowid INT AUTO_INCREMENT NOT NULL UNIQUE,
     jsondata json,
     `executionDateTime` TIMESTAMP,
     `A` BIGINT UNSIGNED,
     `B` BIGINT UNSIGNED,
     );

Importe seu JSON para o campo JSON:
LOAD DATA LOCAL INFILE '/path/to/testfile.json' into table jsontest(jsondata);

Divida seus dados (isso pode ser combinado em um único comando)
UPDATE jsontest set executionDateTime=(jsondata->>'$.executionDateTime');
UPDATE jsontest set A=(jsondata->>'$.A');
UPDATE jsontest set B=(jsondata->>'$.B');

Se você não quiser ter campos extras, poderá consultar o campo jsondata assim:
SELECT jsondata->>"$.executionDateTime" AS executionDateTime,
       jsondata->>"$.A" AS A,
       jsondata->>"$.B" AS B;