Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mengurai data JSON dan memasukkan ke MySQL

  1. Jangan mengonversi json ke array asosiatif secara membabi buta. Ini menciptakan lebih banyak masalah.
  2. Untuk mengakses properti yang mengandung karakter khusus atau kata khusus, gunakan placeholder seperti $data->{'$ts'}
  3. Mengulangi array dan objek jika diperlukan.
  4. Menambahkan id peningkatan otomatis kolom ke tabel membantu menyimpan data untuk satu perangkat.
  5. Adalah ide yang baik untuk menambahkan time ke error_log meja juga

Diuji di bawah versi singkat dari pertanyaan awal Anda dan berhasil.

<?php
        $_user = 'root';
        $_password= 'root';
        $_db = 'localtest';
        $_host = 'localhost';
        $_port = 3306;
    $con = new mysqli($_host, $_user, $_password, $_db) or die(mysql_error);

    //read the json file contents
    $jsondata = file_get_contents('test.json');

    //do not convert to array
    $json = json_decode($jsondata);

    $id = $json->device->sn;
    foreach($json->data as $key => $data){
        if(empty($data) || !isset($data->{'$ts'})){
            continue;
        }
        if (isset($data->{'$msg'})){
            $msg = $data->{'$msg'};
            $time = $data->{'$ts'};

            $sql="INSERT into error_log (sn, time, MSG) VALUES (?,?,?); ";
            $stmt = $con-> prepare($sql);
            $stmt -> bind_param("iss", $id,$time, $msg);
            $stmt -> execute();
        }else{
            $time = (isset($data->{'$ts'}))? $data->{'$ts'}:'';
            $RH = (isset($data->RH))? $data->RH:'';
            $AT = (isset($data->AT))? $data->AT:'';
            $MINVi = (isset($data->MINVi))? $data->MINVi:'';

            //insert into mysql table
            $sql="INSERT into test (sn, date, RH, AT, MINVi) VALUES (?,?,?,?,?); ";
            $stmt = $con-> prepare($sql);
            $stmt -> bind_param("issss", $id,$time,$RH,$AT,$MINVi);
            $stmt -> execute();
        }


    }
    mysqli_close($con);

?>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan nilai BLOB ke dalam database MySQL

  2. Transformasi baris ke kolom di MySQL

  3. Cara Menginstal dan Mengkonfigurasi phpMyAdmin di CentOS 6

  4. Mencoba melakukan LOAD DATA INFILE dengan REPLACE dan AUTO_INCREMENT

  5. Cara Membuat Daftar Tabel di MySQL dan MariaDB