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

Masalah dengan MySQL LOAD XML INFILE

Saya tidak dapat menemukan cara untuk melakukan ini menggunakan LOAD XML INFILE sambil mempertahankan konten CDATA. Namun, berikut ini berfungsi dan menggunakan LOAD DATA INFILE lama yang bagus bersama dengan ExtractValue() untuk mencapai hal yang sama:

Jika kami memiliki file contoh Anda dan tabel ini:

CREATE TABLE `yahootable` (
  `id` int(11) NOT NULL PRIMARY KEY,
  `various` text,
  `message` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8
;

kemudian menjalankan pernyataan ini akan mengimpor isi file ke dalam tabel:

LOAD DATA INFILE 
    '/tmp/yahootable.xml'
INTO TABLE 
    yahootable
CHARACTER SET 'utf8'
LINES STARTING BY '<row>' TERMINATED BY '</row>'
(@tmp)
SET
  id      = ExtractValue(@tmp, '//id'),
  various = ExtractValue(@tmp, '//various'),
  message = ExtractValue(@tmp, '//message')
;

Ini bekerja dengan memberi tahu LOAD DATA INFILE bahwa setiap <row>...</row> adalah 'garis' logis, yang disimpan dalam variabel lokal @tmp . Kami kemudian meneruskan ini ke ExtractValue berfungsi sebagai fragmen XML dan pilih nilai darinya yang kita inginkan menggunakan ekspresi XPath yang sesuai.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemicu MySQL - AFTER INSERT trigger + UDF sys_exec() masalah

  2. Laravel Eloquent mendapatkan hasil yang dikelompokkan berdasarkan hari

  3. nodejs mysql Error:Koneksi terputus Server menutup koneksi

  4. MySQL - Bagaimana cara menjalankan beberapa kueri pembaruan dalam satu baris?

  5. Hitung (jumlah, maks, rata-rata) kolom yang dipisahkan koma di mysql