2008-11-17 14 views
6

Disculpe mi falta de conocimiento ... Sé que hay mucha documentación en Internet relacionada con esto, pero sigo sin comprender.Importar XML a MySQL 5.1

Mi situación es la siguiente:

Tengo un archivo XML que necesito importación y eventualmente reemplazar al día con.

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

Necesito cambiar un puñado de los nombres de columna automáticamente e importarlos en varias tablas en mi base de datos.

Por ejemplo,

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

y luego importar en MySQL DB

Columnas: products_weight, products_model, products_image, products_price, products_last_modified

importación en la tabla 'productos'

Columnas: products_description, products_name

importación en la tabla 'PRODUCT_DESCRIPTION

también qué pasa con el product_id que se crea automáticamente? Puedo enviar el resultado SQL de la estructura de la tabla.

Realmente aprecié la ayuda ... Estoy dispuesto a pagar algo si están dispuestos a crear un procedimiento totalmente automatizado para importar este archivo en mi base de datos; Estoy usando Zen Cart para alojar mi carrito de compras.

Respuesta

0

No se requiere pago, Using XML in MySQL 5.1 and 6.0 responderá la mayoría de sus preguntas. Además, regrese a la parte superior y lea toda la página, puede hacer mucho con XML y MySQL.

1

Debe una lectura sobre esto - cargar un XML en MySQL http://dev.mysql.com/doc/refman/5.5/en/load-xml.html

Esto le permite hacer algo como esto:

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

La pregunta se refería a la versión 5.1 de MySQL, donde 'LOAD XML' no es compatible. – mxgr

+0

Lo siento. Mi error. –

0

Sí gracias 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 lo hizo por mí. Usé el procedimiento almacenado allí mencionado, pero tiene un pequeño error si quieres importar a otra tabla que no sea 't1'. Basta con sustituir la línea

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

con

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

ejecutar el procedimiento a través de

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

Antes de llamar a este procedimiento asegúrese de que el archivo a importar es accesible, por ejemplo, en la carpeta de datos de MySQL (/ var/lib/mysql /) y ejecutarlo con un usuario con permiso de ARCHIVO.