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

Sự cố với MySQL LOAD XML INFILE

Tôi không thể tìm thấy cách nào để thực hiện việc này bằng cách sử dụng LOAD XML INFILE trong khi vẫn bảo toàn nội dung CDATA. Tuy nhiên, các cách sau hoạt động và sử dụng LOAD DATA INFILE cũ tốt cùng với ExtractValue() để hoàn thành điều tương tự:

Nếu chúng tôi có tệp ví dụ của bạn và bảng này:

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

sau đó chạy câu lệnh này sẽ nhập nội dung của tệp vào bảng:

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')
;

Điều này hoạt động bằng cách thông báo cho THÔNG TIN DỮ LIỆU TẢI rằng mỗi <row>...</row> là một 'dòng' logic, được lưu trữ trong biến cục bộ @tmp . Sau đó, chúng tôi chuyển điều này tới ExtractValue hoạt động như một phân đoạn XML và chọn các giá trị từ nó mà chúng tôi muốn bằng cách sử dụng các biểu thức XPath thích hợp.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL DISTINCT trên GROUP_CONCAT ()

  2. Cách xử lý đúng ký tự quốc tế trong PHP / MySQL / Apache

  3. Khắc phục sự cố sao chép MySQL:Phần thứ hai

  4. MySQL hiển thị trạng thái - hoạt động hoặc tổng số kết nối?

  5. mysql FULLTEXT tìm kiếm nhiều từ