2008-11-17 2 views
6

Прошу прощения за недостаток знаний ... Я знаю, что в Интернете есть много документации, связанной с этим, но я до сих пор не понимаю.Импорт XML в MySQL 5.1

Моя ситуация такова:

У меня есть XML-файл, который нужно импортировать и в конечном итоге заменить ежедневно.

<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> 

Мне нужно изменить несколько имен столбцов автоматически и импортировать их в несколько таблиц в моей базе данных.

Например,

<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> 

А затем импортировать в БД MySQL

Колонки: products_weight, products_model, products_image, products_price, products_last_modified

импорта в таблицу 'продукты'

Столбцы: products_description, products_name

импорта в таблицу «PRODUCT_DESCRIPTION

Кроме того, что о product_id, который автоматически создается? Я могу отправить SQL-вывод структуры таблицы.

Я действительно ценю помощь ... Я готов заплатить некоторые, если они готовы создать полностью автоматизированную процедуру для импорта этого файла в мою базу данных; Я пользуюсь Zen Cart для размещения моей корзины покупок.

ответ

0

Оплата не требуется, Using XML in MySQL 5.1 and 6.0 ответит на большинство ваших вопросов. Кроме того, вернитесь наверх и прочитайте всю страницу, вы можете многое сделать с XML и MySQL.

1

Вы должны прочитанный на это - загрузка XML в MySQL http://dev.mysql.com/doc/refman/5.5/en/load-xml.html

Это позволит вам сделать что-то вроде этого:

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

Вопрос касался MySQL версии 5.1, где `LOAD XML` не поддерживается. – mxgr 2013-11-08 11:40:44

0

Да спасибо дх, http://web.archive.org/web/20100105150533/http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html#xml-5.1-importing сделал это для меня. Я использовал хранимую процедуру, упомянутую там, однако она имеет небольшую ошибку, если вы хотите импортировать ее в другую таблицу, кроме «t1». Просто замените линию

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

с

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

Исполнить процедуру через

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

Перед вызовом этой процедуры убедитесь, что файл для импорта доступен, например, в папке данных MySQL (/ var/lib/mysql /) и выполнить его с пользователем с предоставлением FILE.