Làm cách nào để lưu dữ liệu JSON trong cơ sở dữ liệu MySQL?

Gần đây trong công việc, tôi gặp phải một vấn đề là lưu dữ liệu JSON của các điều kiện kết thúc trong cơ sở dữ liệu MySQL và phân tích cú pháp bất cứ khi nào tôi cần. Sau vài giờ google và thử và kiểm tra, đây là cách tôi giải quyết

Vấn đề

Đầu tiên, để làm rõ vấn đề, đây là tập hợp JSON mà tôi phải lưu trữ trong cơ sở dữ liệu MySQL

{
"condition": "and",
"rules": [
{
"field": "age",
"operator": "
select json_column - >>'$.title',  json_column - . imdb_rating'>'$.imdb_rating', t. * từ movies_json, json_table . cast[*]'[json_column, '$.cast[*]' cột[

       V_name varchar[200] path '$.name',

       V_character varchar[200] path '$.character']

       ] t ở đâu t.V_name like 'Robert Downey Jr. %' and json_column - >>'$.title' like 'Avengers%';

 

 

+---------------------------------+----------------

| json_column - >>' . tiêu đề'        . json_column - >>' . imdb_rating' . V_name            . V_character                        .

+---------------------------------+----------------

| Avengers. Kết thúc trò chơi [2019]       < . | 9                             . Robert Downey Jr. . Tony Stark /                 Sắt < . Man |

| Avengers. Tuổi của Ultron [2015 . ] | 7. 5                           . Robert Downey Jr. . Tony Stark                         .

| Avengers. Vô cực Chiến tranh [2018] .   | null                           . Robert Downey Jr. . Tony Stark /               Sắt < . Man |

+---------------------------------+----------------

3 hàng trong bộ [0.74 giây]

Về cơ bản, json_table lấy một mảng và biến nó thành một đối tượng bảng, cho phép bạn tham gia và truy vấn nó. Bạn cũng có thể sử dụng điều này để liệt kê tất cả các nhân vật mà một diễn viên đã đóng trong bất kỳ bộ phim nào trong sự nghiệp của anh ấy. Đây là phần hai của loạt bài này, khi chúng tôi sẽ chỉ cho bạn một số cách dễ dàng hơn và nhanh hơn để sử dụng JSON từ bên trong MySQL

Làm cách nào để lưu trữ dữ liệu JSON trong cơ sở dữ liệu MySQL?

Lưu ý rằng bất kỳ cơ sở dữ liệu nào cũng sẽ chấp nhận tài liệu JSON dưới dạng một chuỗi đơn. Tuy nhiên, MySQL và PostgreSQL hỗ trợ dữ liệu JSON được xác thực theo các cặp khóa/giá trị thực thay vì một chuỗi cơ bản. .
Hàm JSON_ARRAY[], tạo mảng. .
Hàm JSON_OBJECT[], tạo đối tượng

Chúng tôi có thể lưu dữ liệu JSON trong MySQL không?

MySQL hỗ trợ loại dữ liệu JSON gốc được xác định bởi RFC 7159, cho phép truy cập hiệu quả vào dữ liệu trong tài liệu JSON [Ký hiệu đối tượng JavaScript] . Kiểu dữ liệu JSON cung cấp những lợi thế này so với việc lưu trữ các chuỗi định dạng JSON trong một cột chuỗi. Tự động xác thực các tài liệu JSON được lưu trữ trong các cột JSON.

Làm cách nào để chèn dữ liệu JSON vào cơ sở dữ liệu MySQL?

Bước 1. Kết nối PHP với cơ sở dữ liệu MySQL. Là bước đầu tiên và quan trọng nhất, chúng ta phải kết nối PHP với cơ sở dữ liệu MySQL để chèn dữ liệu JSON vào MySQL DB. .
Bước 2. Đọc tệp JSON trong PHP. .
Bước 3. Chuyển đổi chuỗi JSON thành mảng PHP. .
Bước 4. Trích xuất các giá trị mảng. .
Bước 5. Chèn JSON vào cơ sở dữ liệu MySQL bằng mã PHP

Làm cách nào để lưu dữ liệu JSON trong DB?

Lưu trữ JSON trong bảng cơ sở dữ liệu. Truy vấn bảng cho các hàng lưu trữ các giá trị cụ thể trong tài liệu JSON. Tạo chỉ mục để tìm các hàng này một cách hiệu quả. .
Có mệnh đề cột ban đầu. .
Trong phần này xác định một đường dẫn lồng nhau, trả về mảng nhân viên [employees[*]]

Chủ Đề