JSON adalah alias untuk LONGTEXT yang diperkenalkan untuk alasan kompatibilitas dengan tipe data JSON MySQL. MariaDB mengimplementasikan ini sebagai LONGTEXT, karena tipe data JSON bertentangan dengan standar SQL, dan tolok ukur MariaDB menunjukkan bahwa kinerja setidaknya setara
Untuk memastikan bahwa dokumen json yang valid dimasukkan, fungsi JSON_VALID dapat digunakan sebagai a. Batasan ini secara otomatis disertakan untuk tipe yang menggunakan alias JSON dari MariaDB 10. 4. 3
Contoh
CREATE TABLE t (j JSON); DESC t; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | j | longtext | YES | | NULL | | +-------+----------+------+-----+---------+-------+Dengan validasi
CREATE TABLE t2 ( j JSON CHECK (JSON_VALID(j)) ); INSERT INTO t2 VALUES ('invalid'); ERROR 4025 (23000): CONSTRAINT `j` failed for `test`.`t2` INSERT INTO t2 VALUES ('{"id": 1, "name": "Monty"}'); Query OK, 1 row affected (0.13 sec) _Replikasi Data JSON Antara MySQL dan MariaDB
Jenis JSON di MySQL menyimpan objek JSON dalam bentuk yang ringkas, bukan LONGTEXT seperti di MariaDB. Ini berarti replikasi berbasis baris tidak akan berfungsi untuk tipe JSON dari MySQL ke MariaDB
Ada beberapa cara berbeda untuk menyelesaikan ini
- Gunakan replikasi berbasis pernyataan
- Ubah kolom JSON untuk mengetikkan TEXT di MySQL
- Jika Anda harus menggunakan replikasi berbasis baris dan tidak dapat mengubah master MySQL dari JSON ke TEXT, Anda dapat mencoba memperkenalkan budak MySQL perantara dan mengubah jenis kolom dari JSON ke TEXT di atasnya. Kemudian Anda mereplikasi dari budak perantara ini ke MariaDB
Mengonversi MySQL TABLE dengan JSON Fields ke MariaDB
MariaDB tidak dapat langsung mengakses format JSON MySQL
Ada beberapa cara berbeda untuk memindahkan tabel ke MariaDB
Perbedaan Antara String JSON MySQL dan String JSON MariaDB
Lihat juga
Komentar
Konten yang direproduksi di situs ini adalah milik dari pemiliknya masing-masing, dan konten ini tidak ditinjau sebelumnya oleh MariaDB. Pandangan, informasi, dan opini yang diungkapkan oleh konten ini tidak selalu mewakili MariaDB atau pihak lain mana pun
Artikel ini menjelaskan berbagai cara mengekspor data MySQL ke format file JSON. JSON adalah singkatan dari Notasi Objek JavaScript. Ini adalah format file yang ringan untuk menyimpan dan mentransfer data, biasanya digunakan saat data dikirim dari server ke halaman web
Pada bagian pertama artikel ini, kita akan melihat beberapa fungsi MySQL sebagai salah satu solusi untuk mengekspor data MySQL ke JSON. Selanjutnya, kita akan melihat bagaimana fungsi keluaran MySQL Shell dan JSON dapat digunakan untuk mencapai tujuan yang sama, dan yang terakhir, kita akan mengenal ekstensi, ApexSQL Database Power Tools untuk VS Code dan fitur Ekspor ke JSON
Metode berikut untuk mengekspor akan digunakan
- dan fungsi
- dan fungsi
- Keluaran Format MySQL Shell dan JSON
- Ekspor ke JSON menggunakan perangkat lunak pihak ketiga
Untuk artikel ini, kode SQL di bawah ini akan digunakan sebagai contoh
CREATE DATABASE addresses; USE addresses; CREATE TABLE location ( address_id int NOT NULL AUTO_INCREMENT, address varchar(50) NOT NULL, address2 varchar(50) DEFAULT NULL, PRIMARY KEY (address_id) ); INSERT INTO location VALUES (NULL, '1586 Guaruj Place', '47 MySakila Drive'), (NULL, '934 San Felipe de Puerto Plata Street', NULL), (NULL, '360 Toulouse Parkway', '270, Toulon Boulevard');
(sumber. Cara mengekspor data MySQL ke CSV)
Mengekspor data MySQL ke JSON menggunakan fungsi CONCAT() dan GROUP_CONCAT()
Menggunakan kombinasi dan fungsi, data dari string SQL dapat diubah menjadi format JSON
Di editor kueri, jalankan kode berikut
SELECT CONCAT("[", GROUP_CONCAT( CONCAT("{address_id:'",address_id,"'"), CONCAT("address:'",address,"'"), CONCAT(",address2:'",address2,"'}") ) ,"]") AS json FROM location;
Hasilnya akan seperti ini
[{alamat_id. ’1’address. ’1586 Guaruj Place’, alamat2. ’47 MySakila Drive’},{address_id. ’3’alamat. ’360 Toulouse Parkway’, alamat2. ’270, Toulon Boulevard’}]
Untuk mengekspor hasil ini dari hasil kueri ke file JSON, tambahkan satu baris kode lagi
SELECT CONCAT("[", GROUP_CONCAT( CONCAT("{address_id:'",address_id,"'"), CONCAT("address:'",address,"'"), CONCAT(",address2:'",address2,"'}") ) ,"]") AS json FROM location INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/location.json'_
Setelah dieksekusi, hasilnya akan seperti pada gambar di bawah ini
- Lebih lanjut tentang penggunaan INTO OUTFILE dapat ditemukan di artikel Cara mengekspor data MySQL ke CSV
Mengekspor data MySQL ke JSON menggunakan fungsi JSON_OBJECT dan JSON_ARRAYAGG
Fungsi JSON_OBJECT memetakan sejumlah variabel argumen ke objek JSON. Itu membuat daftar pasangan nilai kunci dan mengembalikan objek JSON yang berisi pasangan tersebut. Dengan memberikan setiap pasangan kunci/nilai sebagai dua argumen terpisah. Setiap pasangan menjadi pasangan kunci/nilai dalam objek JSON yang dihasilkan
Ketika kode di bawah ini dijalankan
SELECT JSON_OBJECT ('address_id', address_id, 'address', address, 'address2', address2) FROM location;
Hasilnya harus seperti ini
Sekarang, mari ubah kode untuk mengekspor data ke file JSON. Jalankan yang berikut ini
SELECT JSON_OBJECT ('address_id', address_id, 'address', address, 'address2', address2) FROM location INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/location.json'_
Ketika file JSON yang baru dibuat dibuka, hasilnya akan terlihat seperti ini
Jika Anda ingin hasil ditetapkan sebagai satu baris yang berisi larik JSON dengan satu objek per baris, maka fungsi JSON_ARRAYAGG harus digunakan dalam kombinasi dengan fungsi JSON_OBJECT. Setiap baris dari kumpulan hasil berakhir sebagai elemen tunggal dalam larik
Jalankan hasil di bawah ini untuk melihat hasilnya
SELECT JSON_ARRAYAGG(JSON_OBJECT ('address_id', address_id, 'address', address, 'address2', address2)) FROM location
Tambahkan perintah INTO OUTFILE untuk mengekspor data MySQL ke file JSON
SELECT JSON_ARRAYAGG(JSON_OBJECT ('address_id', address_id, 'address', address, 'address2', address2)) FROM location INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/location.json';_
- Catatan. Fungsi JSON_ARRAYAGG tersedia dari server MySQL 8. 0 versi
Ekspor data MySQL ke JSON menggunakan MySQL Shell dan Output Format JSON
MySQL Shell menyediakan beberapa opsi format JSON untuk mencetak kumpulan hasil
- json – mengembalikan nilai JSON dengan cara yang diformat dengan baik, yang membuatnya lebih mudah dibaca oleh manusia
- ndjson – mengembalikan JSON mentah yang dibatasi oleh baris baru
- json/array – mengembalikan JSON mentah yang dibungkus dalam array JSON
Mulai MySQL Shell dan sambungkan ke database tempat Anda ingin mengekspor data
Untuk terhubung ke database, di MySQL Shell jalankan perintah berikut
\hubungkan root@localhost. 33060/alamat
Format file keluaran json
Untuk memformat nilai data dalam keluaran json, di MySQL Shell, jalankan kode berikut
shell.options.set('resultFormat','json') _
Setelah itu, jalankan kode berikut untuk menarik data dari tabel lokasi
session.sql("select * from location")
Outputnya akan terlihat seperti ini
- {
- “alamat_id”. 1,
- "alamat". “Tempat Guaruj 1586”,
- "alamat 2". “47 MySakila Drive”
- }
- {
- “alamat_id”. 2,
- "alamat". “Jalan San Felipe de Puerto Plata 934”,
- "alamat 2". batal
- }
- {
- “alamat_id”. 3,
- "alamat". “Parkway Toulouse 360”,
- "alamat 2". “270, Boulevard Toulon”
- }
Format file keluaran ndjson
Di Shell MySQL, jalankan kode berikut untuk mengubah format hasil
shell.options.set('resultFormat','ndjson')
Sekarang, saat kode dieksekusi
session.sql("select * from location")
Hasilnya akan seperti ini
{“alamat_id”. 1, "alamat". ”1586 Guaruj Place”,”alamat2″. ”47 MySakila Drive”}
{“alamat_id”. 2,”alamat”. ”934 San Felipe de Puerto Plata Street”,”alamat2″. batal}
{“alamat_id”. 3, "alamat". ”360 Toulouse Parkway”,”alamat2″. ”270, Toulon Boulevard”}
Format file keluaran json/array
Untuk beralih ke format hasil json/array, di MySQL Shell jalankan kode di bawah ini
SELECT CONCAT("[", GROUP_CONCAT( CONCAT("{address_id:'",address_id,"'"), CONCAT("address:'",address,"'"), CONCAT(",address2:'",address2,"'}") ) ,"]") AS json FROM location;1
Sekarang, ketika pernyataan SELECT dijalankan, hasilnya akan terlihat seperti ini
[
{“alamat_id”. 1, "alamat". ”1586 Guaruj Place”,”alamat2″. ”47 MySakila Drive”},
{“alamat_id”. 2,”alamat”. ”934 San Felipe de Puerto Plata Street”,”alamat2″. batal},
{“alamat_id”. 3, "alamat". ”360 Toulouse Parkway”,”alamat2″. ”270, Toulon Boulevard”}
]
Mengekspor data MySQL menggunakan perangkat lunak pihak ketiga
ApexSQL Database Power Tools for VS Code adalah ekstensi yang dapat mengekspor data dari kisi hasil ke dalam format file JSON hanya dalam beberapa langkah. Selain JSON, ekstensi ini memiliki opsi untuk mengekspor data MySQL ke format file CSV, Excel, dan HTML
Untuk mengekspor data, dalam Visual Studio Code di bawah panel explorer server ApexSQL, buka kueri baru
Di editor kueri yang baru dibuka, jalankan pernyataan SELECT dari mana Anda ingin hasilnya diekspor
Di pojok kanan atas kisi hasil, klik ikon Ekspor ke JSON. Di jendela Save As, pilih lokasi untuk mengekspor data MySQL ke file JSON, di bawah File name masukkan nama file dan klik tombol Save
Setelah file disimpan, di pojok kanan bawah aplikasi, muncul pesan info dengan tombol Show. Ketika diklik, itu akan membuka lokasi penyimpanan file