1. Trang chủ
  2. » Tất cả

Bài thực hành XML trong Oracle

4 23 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 55,5 KB

Nội dung

Bài thực hành XML trong Oracle Khoa Hệ thống thông tin – Đại học Công nghệ thông tin Bài thực hành XML trong Oracle Các cách tiếp cận lưu trữ XML trong Oracle database Tiếp cận 1 Sử dụng datatype là X[.]

Khoa Hệ thống thông tin – Đại học Công nghệ thông tin Bài thực hành XML Oracle Các cách tiếp cận lưu trữ XML Oracle database: - Tiếp cận 1: Sử dụng datatype XMLType Trong cách có phương án: a) lưu trữ nội dung file XML (tài liệu XML) trực tiếp cột (column) có kiểu XMLType table định, b)Sử dụng bảng XMLType (XMLType Table) để lưu trữ file XML - Tiếp cận 2: lưu trữ nội dung file XML sử dụng cột CLOB VARCHAR THỰC HÀNH CÁCH TIẾP CẬN 1a) Tạo bảng có tên TEST có cột(column) với kiểu XMLTYPE Trong Oracle tạo table có tên TEST sau: CREATE TABLE TEST ( ID NUMBER, XMLCOLUMN XMLTYPE ) Sau tạo file xml có nội dung sau: 1058 9111111 11 hcm 304 1 vungtau Khoa Hệ thống thông tin – Đại học Công nghệ thông tin Tiếp theo, copy toàn nội dung file XML insert liệu vào bảng TEST (nội dung file XML điền đầy vào giá trị cột thứ table TEST – cột XMLCOLUMN) công cụ Sqlplus: insert into TEST values(1, ' 1058 9111111 11 hcm 304 1 vungtau ') Thực câu truy vấn theo cú pháp XPATH: (đường dẫn XML, tương tự truy vấn dạng cây, theo nhánh từ gốc (ROOT) xuống nút (NODE) dừng nút cần tìm (đi từ ROOT XML) 1.1 Dùng hàm Extract trả giá trị node dạng văn xml (trích lược phần file XML) Ví dụ: trích phần file XML chứa thơng tin địa nhân viên có mã số = “1”: từ gốc, ta có: select extract(xmlcolumn,'qlnv/nhanvien[1]/diachi') from test LƯU Ý: VỚI NHỮNG THẺ GIỐNG NHAU TRONG TÀI LIỆU XML, HÀM EXTRACT SẼ PHẢI XÁC ĐỊNH THẺ DUY NHẤT MÀ NĨ CẦN RẺ NHÁNH ĐÊN Ví dụ: ta có thẻ , ta cần phải xác định thẻ lấy (Extract) thông qua id 1.2 Tương tự cho hàm khác: hàm Extractvalue() (lấy giá trị nút cụ thể, hàm trả giá trị) ; hàm ExistsNode() kiểm tra nút có tồn hay khơng (ExtractValue() can only return a the value of a single node or attribute value) Ví dụ: select extractvalue(xmlcolumn,'qlnv/nhanvien[1]/diachi/sonha') from TEST select existsnode(xmlcolumn,'qlnv/nhanvien[1]/diachi') from TEST Khoa Hệ thống thông tin – Đại học Công nghệ thông tin select extractvalue(xmlcolumn,'/qlnv/nhanvien[1]/diachi/sodienthoai/@coquan') from TEST THỰC HÀNH CÁCH TIẾP CẬN 1b) Tạo bảng có tên TEST_2 có kiểu XMLTYPE Trong Oracle tạo table có tên TEST_2 sau: CREATE TABLE TEST_2 of XMLType; Tạo thư mục chứa tất file XML mà ta cần đọc nội dung Ví dụ: tạo thư mục DirXML ổ đĩa D:\ chép file XML vào thư mục DirXML (ví dụ chép file: qlnv.xml (chứa userID từ đến 3), qlnv1.xml (chứa userID từ đến 6)) Tiếp theo, connect user sys để tạo tên thư mục Oracle ánh xạ đến thư mục vật lý chứa file XML, đặt thư mục ánh xạ tên “DirXMLOra”, lưu ý: sử dụng tên thư mục ánh xạ bắt buộc sử dụng chữ viết hoa Đồng thời gán quyền read thư mục cho user cần truy xuất (có thể gán public) create directory DirXMLOra as 'D:\DirXML' grant read on directory DirXMLOra to public with grant option Sau đó, connect lại user sở hữu table TEST_2 chạy function sau để lấy liệu từ file XML vào table TEST_2: create or replace function getDocument (filename varchar2) return clob authid current_user is xbfile bfile; xclob clob; begin xbfile := bfilename('DIRXMLORA',filename); dbms_lob.open(xbfile); dbms_lob.createtemporary(xclob,TRUE,dbms_lob.session); dbms_lob.loadfromfile(xclob,xbfile, dbms_lob.getlength(xbfile)); dbms_lob.close(xbfile); return xclob; end; INSERT INTO TEST_2 VALUES(XMLTYPE(getDocument('qlnv.xml'))); INSERT INTO TEST_2 VALUES(XMLTYPE(getDocument('qlnv1.xml'))); Khoa Hệ thống thông tin – Đại học Công nghệ thông tin Truy xuất liệu từ table trên, tương tự cách 1a): Lưu ý: sử dụng alias cho table, ví dụ TEST_2 x SELECT * FROM TEST_2; SELECT EXISTSNODE (value(x),'/qlnv/nhanvien[2]/diachi') from TEST_2 x SELECT EXTRACT (value(x),'qlnv/nhanvien[2]/diachi/sonha') from TEST_2 x SELECT EXTRACTVALUE (value(x),'qlnv/nhanvien[1]/diachi/sonha') from TEST_2 x SELECT EXTRACTVALUE (value(x),'qlnv/nhanvien[1]/diachi/sodienthoai/@nha') from TEST_2 x SELECT count(*) FROM TEST_2 x WHERE extractvalue(value(x),'/qlnv/nhanvien[3]/diachi/thanhpho') = 'vungtau'; SELECT existsNode(value(x),'/qlnv/nhanvien[@id = "1"]/diachi') FROM TEST_2 x SELECT existsNode(value(x),'/qlnv/nhanvien[@id = "6"]/diachi') FROM TEST_2 x SELECT existsNode(value(x),'/qlnv/nhanvien[@id = "8"]/diachi') FROM TEST_2 x ... of XMLType; Tạo thư mục chứa tất file XML mà ta cần đọc nội dung Ví dụ: tạo thư mục DirXML ổ đĩa D:\ chép file XML vào thư mục DirXML (ví dụ chép file: qlnv .xml (chứa userID từ đến 3), qlnv1 .xml. .. thông tin select extractvalue(xmlcolumn,''/qlnv/nhanvien[1]/diachi/sodienthoai/@coquan'') from TEST THỰC HÀNH CÁCH TIẾP CẬN 1b) Tạo bảng có tên TEST_2 có kiểu XMLTYPE Trong Oracle tạo table có tên TEST_2... copy tồn nội dung file XML insert liệu vào bảng TEST (nội dung file XML điền đầy vào giá trị cột thứ table TEST – cột XMLCOLUMN) công cụ Sqlplus: insert into TEST values(1, ''< ?xml version="1.0"?>

Ngày đăng: 05/01/2023, 20:14

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w