Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да импортирам JSON файл в MySQL база данни, като използвам проста заявка, без всъщност да го конвертирам в други файлови формати като CSV и т.н.?

Справка:https://dev.mysql.com /doc/refman/5.7/en/json-search-functions.html

Знам, че това е по-стара нишка, но MySQL 5.7 вече има тип JSON, където можете да импортирате JSON в поле, след което можете да използвате изчислени полета, за да разделите json на отделни полета. Ето груб код (не е тестван):

Създайте JSON тестова таблица:

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

Импортирайте своя JSON в полето JSON:

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

Разделете вашите данни (това може да се комбинира в една команда)

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

Ако не искате да имате допълнителни полета, можете да заявите полето jsondata по следния начин:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. InnoDB:Не може да се заключи грешка ./ibdata1:35

  2. MySQL Event Scheduler в определено време всеки ден

  3. Произволно избрани редове чрез JPA

  4. Посочената парола за потребителски акаунт „root“ не е валидна или не успя да се свърже със сървъра на базата данни

  5. Django ORM заявка GROUP BY множество колони, комбинирани от MAX