Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để tôi có thể nhập tệp JSON vào cơ sở dữ liệu MySQL, sử dụng một truy vấn đơn giản mà không thực sự chuyển đổi tệp đó sang bất kỳ định dạng tệp nào khác như CSV, v.v.?

Tham khảo: https://dev.mysql.com /doc/refman/5.7/en/json-search-functions.html

Tôi biết đây là một luồng cũ hơn, nhưng MySQL 5.7 hiện có kiểu JSON nơi bạn có thể nhập JSON vào một trường, sau đó bạn có thể sử dụng các trường được tính toán để chia json thành các trường riêng biệt. Đây là mã thô (chưa được kiểm tra):

Tạo Bảng kiểm tra JSON:

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

Nhập JSON của bạn vào trường JSON:

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

Tách dữ liệu của bạn (điều này có thể được kết hợp thành một lệnh duy nhất)

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

Nếu bạn không muốn có thêm các trường, bạn có thể truy vấn trường jsondata như sau:

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. Các mô hình Django:giá trị mặc định cho cột

  2. Truy xuất bản ghi cuối cùng trong mỗi nhóm - MySQL

  3. Phân tích cú pháp mệnh đề SELECT của các truy vấn SQL thành một mảng PHP

  4. MySQL - trường SELECT WHERE IN (truy vấn con) - Tại sao cực kỳ chậm?

  5. Node JS ngắt kết nối cơ sở dữ liệu mysql