2008-11-17 33 views
6

Hãy tha thứ cho sự thiếu kiến ​​thức của tôi ... Tôi biết có rất nhiều tài liệu trên internet liên quan đến điều này nhưng tôi vẫn không hiểu.Nhập XML vào MySQL 5.1

Tình huống của tôi là:

Tôi có tệp XML mà tôi cần nhập và cuối cùng thay thế hàng ngày bằng.

<item> 
     <model>AA311-Pink</model> 
     <title>1122</title> 
     <price>19.43</price> 
     <category>cat</category> 
     <loc>/AA311.html</loc> 
     <image>/aa311.jpg</image> 
     <description>Item Info</description> 
     <weight>0.45</weight> 
     <option_type>Color-Color</option_type> 
     <option_value>Pink-Pink</option_value> 
     <suggested_retail>51.50</suggested_retail> 
     <special_handling/> 
     <manufacturer>Tantus</manufacturer> 
     <manufacturer_code>VB5074 and VB5067</manufacturer_code> 
     <packaging>Retail Packaging</packaging> 
     <in_stock>Yes</in_stock> 
     <lastupdated>2008-11-05 16:35:56</lastupdated> 

Tôi cần thay đổi một số tên cột tự động và nhập chúng vào nhiều bảng trong cơ sở dữ liệu của tôi.

Ví dụ,

<item> 
     <products_model>AA315</products_model> 
     <products_name>name</products_name> 
     <price>19.43</price> 
     <category>cat</category> 
     <loc>/AA315.html</loc> 
     <products_image>aa315.jpg</products_image> 
     <products_description>info</products_description> 
     <products_weight>0.44</products_weight> 
     <option_type/> 
     <option_value/> 
     <products_price>51.50</products_price> 
     <special_handling/> 
     <manufactures_name>Tantus</manufactures_name> 
     <manufacturer_code>VA5104</manufacturer_code> 
     <packaging>Retail Packaging</packaging> 
     <products_status>Yes</products_status> 
     <products_last_modified>2008-11-05 16:35:27</products_last_modified> 

Và sau đó nhập vào MySQL DB

Cột: products_weight, products_model, products_image, products_price, products_last_modified

nhập khẩu vào bảng 'sản phẩm'

Cột: products_description, products_name

nhập vào bảng 'product_description

Còn về product_id được tạo tự động thì sao? Tôi có thể gửi đầu ra SQL của cấu trúc bảng.

Tôi thực sự đánh giá cao sự trợ giúp ... Tôi sẵn sàng trả một số nếu họ sẵn sàng tạo một thủ tục hoàn toàn tự động để nhập tệp này vào cơ sở dữ liệu của tôi; Tôi đang sử dụng Zen Cart để lưu trữ giỏ hàng của mình.

Trả lời

0

Không cần thanh toán, Using XML in MySQL 5.1 and 6.0 sẽ trả lời hầu hết các câu hỏi của bạn. Ngoài ra, quay trở lại đầu trang và đọc toàn bộ trang, bạn có thể làm rất nhiều với XML và MySQL.

1

Bạn nên đọc về vấn đề này - tải một XML vào MySQL http://dev.mysql.com/doc/refman/5.5/en/load-xml.html

này cho phép bạn làm điều gì đó như thế này:

mysql> LOAD XML LOCAL INFILE 'items.xml' 
    -> INTO TABLE item 
    -> ROWS IDENTIFIED BY '<item>'; 
+0

Câu hỏi đã đề cập đến phiên bản MySQL 5.1, trong đó 'LOAD XML' không được hỗ trợ. – mxgr

+0

Xin lỗi. Lỗi của tôi. –

0

Có nhờ gx, http://web.archive.org/web/20100105150533/http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html#xml-5.1-importing đã làm nó cho tôi. Tôi đã sử dụng thủ tục được lưu trữ được đề cập ở đó, tuy nhiên nó có một lỗi nhỏ nếu bạn muốn nhập vào một bảng khác với 't1'. Chỉ cần thay thế dòng

SET @ins_text = CONCAT('INSERT INTO t1 (', ins_list, ') VALUES (', val_list, ')'); 

với

SET @ins_text = CONCAT('INSERT INTO ', database_name, '.', table_name, ' (', ins_list, ') VALUES (', val_list, ')'); 

thực hiện thủ tục thông qua

call xmldump_load('<filename>', '<schema>', '<tablename>'); 

Trước khi gọi thủ tục này đảm bảo các tập tin để nhập khẩu có thể truy cập, ví dụ trong thư mục dữ liệu mysql (/ var/lib/mysql /) và thực thi nó với một người dùng với FILE grant.