Magento Chile Desarrolladores Magento

¿Tienes una pregunta?

Si usted tiene cualquier pregunta, escriba a continuación lo que está buscando!

Importar products, category, customers, sales y attributes Magento


Ya cabros, aquí les traigo la papita calentita…

Empezaré contando que un cliente me ha solicitado migrar una tienda, la cual estaba corrupta en todos lados, por actualizaciones de Magento mal realizadas y módulos de dudosa reputación. Bueno hice mi tradicional migración en la cual grabo una base de datos con data y le tiro un Magento limpio arriba y puff zuacatela error por todos lados. Dado esto empece a buscar módulos de migración de productos y probé algunos de los cuales no sirvieron de nada, ya que fallaban en algo básico. Y eso básico es que para poder traer los productos de una tienda a otra, se deben de crear primero los atributos y ojo que no es crearlos a mano uno a uno, porque eso no sirve, ya que hay un orden en los cuales quedan y los productos los leen.
Bueno los módulos de pagos y no pago, que dicen importar y exportar productos con sus atributos, solo sirven para tiendas con productos simples y de niñitas. Para hacer una migración muy dificil, con unos 100 atributos bastante complicados y categorías amarrados a ellos y productos entrelazados, todos como atrapados por la fuerza gravitatoria de un agujero de gusano, se debe tomar una actitud de macho cabrio y picar hondo.

1.- Ir a phpMyAdmin y seleccionar su base de datos de la tienda original.
2.- Exportar todos los atributos y estos son, todos los prefijos con “eav_” es decir:

eav_attribute
eav_attribute_group
eav_attribute_label
eav_attribute_option
eav_attribute_option_value
eav_attribute_set
eav_entity
eav_entity_attribute
eav_entity_datetime
eav_entity_decimal
eav_entity_int
eav_entity_store
eav_entity_text
eav_entity_type
eav_entity_type
eav_entity_varchar
eav_form_element
eav_form_fieldset
eav_form_fieldset_label
eav_form_type
eav_form_type_entity

Nota 31-03-2014, para Magento 1.8.1.0 se debe exportar la siguiente tabla también "catalog_eav_attribute".

Estos atributos les quedaran en un archivo sql el cual llamaremos creativamente “atributos.sql”

3.- Ubicar en la misma base de datos la tabla “catalog_eav_attribute.sql” y exportarla y les quedará el archivo llamado “catalog_eav_attribute.sql”

4.- Para las categorías, exportar todas las tablas con el prefijo catalog_category_ es decir:

catalog_category_anc_categs_index_idx
catalog_category_anc_categs_index_tmp
catalog_category_anc_products_index_idx
catalog_category_anc_products_index_tmp
catalog_category_entity
catalog_category_entity_datetime
catalog_category_entity_decimal
catalog_category_entity_int
catalog_category_entity_text
catalog_category_entity_varchar
catalog_category_flat_store_1
catalog_category_product
catalog_category_product_index
catalog_category_product_index_enbl_idx
catalog_category_product_index_enbl_tmp
catalog_category_product_index_idx
catalog_category_product_index_tmp

Y nombrar ese archivo como “categorias.sql”

5.- Para los clientes lo mismo, ubicar todas las tablas con el prefijo customer_ es decir:

customer_address_entity
customer_address_entity_datetime
customer_address_entity_decimal
customer_address_entity_int
customer_address_entity_text
customer_address_entity_text
customer_address_entity_varchar
customer_eav_attribute
customer_eav_attribute_website
customer_entity
customer_entity_datetime
customer_entity_decimal
customer_entity_int
customer_entity_text
customer_entity_varchar
customer_form_attribute
customer_group

Guardar el archivo como “clientes.sql”

6.- Ubicar la tabla “log_quote.sql” y exportar y llamarla así mismo

7.- Para las ventas exportar todas las tablas con el prefijo sales_flat y otros es decir:

sales_flat_creditmemo
sales_flat_creditmemo_comment
sales_flat_creditmemo_grid
sales_flat_creditmemo_item
sales_flat_invoice
sales_flat_invoice_comment
sales_flat_invoice_grid
sales_flat_invoice_item
sales_flat_order
sales_flat_order_address
sales_flat_order_address
sales_flat_order_grid
sales_flat_order_item
sales_flat_order_payment
sales_flat_order_status_history
sales_flat_quote
sales_flat_quote_address
sales_flat_quote_address_item
sales_flat_quote_item
sales_flat_quote_item_option
sales_flat_quote_payment
sales_flat_quote_shipping_rate
sales_flat_shipment
sales_flat_shipment_comment
sales_flat_shipment_grid
sales_flat_shipment_item
sales_flat_shipment_track
sales_invoiced_aggregated
sales_invoiced_aggregated_order
sales_order_aggregated_created
sales_order_aggregated_updated
sales_order_status
sales_order_status_label
sales_order_status_state
sales_order_tax
sales_order_tax_item
sales_payment_transaction
sales_recurring_profile
sales_recurring_profile_order
sales_refunded_aggregated
sales_refunded_aggregated_order
sales_shipping_aggregated
sales_shipping_aggregated_order

Y guardar el archivo como “sales.sql”

8.- Para los productos, debemos exportar todas la tablas que indico aquí:

catalogrule
catalogrule_affected_product
catalogrule_customer_group
catalogrule_group_website
catalogrule_product
catalogrule_product_price
catalogrule_website
catalogsearch_fulltext
catalogsearch_query
catalogsearch_result
cataloginventory_stock
cataloginventory_stock_item
cataloginventory_stock_status
cataloginventory_stock_status_idx
cataloginventory_stock_status_tmp
catalog_product_bundle_option
catalog_product_bundle_option_value
catalog_product_bundle_selection
catalog_product_enabled_index
catalog_product_entity
catalog_product_entity_datetime
catalog_product_entity_decimal
catalog_product_entity_gallery
catalog_product_entity_int
catalog_product_entity_media_gallery
catalog_product_entity_media_gallery_value
catalog_product_entity_text
catalog_product_entity_tier_price
catalog_product_entity_varchar
catalog_product_link
catalog_product_link_attribute
catalog_product_link_attribute_decimal
catalog_product_link_attribute_int
catalog_product_link_attribute_varchar
catalog_product_link_type
catalog_product_option
catalog_product_option_price
catalog_product_option_title
catalog_product_option_type_price
catalog_product_option_type_title
catalog_product_option_type_value
catalog_product_super_attribute
catalog_product_super_attribute_label
catalog_product_super_attribute_pricing
catalog_product_super_link
catalog_product_website

Y grabar el archivo como “productos.sql”

9. Ahora deben intervenir cada archivo creado, es decir a “atributos.sql”, “catalog_eav_attribute.sql”, “categorias.sql”, “clientes.sql”, “sales.sql” y a “productos.sql” con lo siguiente para cada atributo:
Ejemplo para atributo cataloginventory_stock :

Está así:

CREATE TABLE `cataloginventory_stock`

Debe quedar así:

DROP TABLE IF EXISTS `cataloginventory_stock`;
CREATE TABLE `cataloginventory_stock`

9.1 Y muy importante es que deben ingresar arriba en el principio del archivo esto:

SET FOREIGN_KEY_CHECKS=0;

Esto se debe hacer para cada atributo en todos los archivos. Es una tarea larga de hacer que les llevará aprox unos 30 min.

10.- Tomar la carpeta “media” de su tienda original, comprimirla y bajarla a tu escritorio.

11.- Instalar un Magento limpio e inmaculado, luego renombrar la carpeta “media” como “media_community” y traer la carpeta “media” que comprimimos en el punto 10, descomprimirla…

12.- Ir a phpMyAdmin a la base de datos nueva, que hemos creado para instalar el Magento limpio e importar uno a uno los archivos que hemos creados, es decir debemos importar a “atributos.sql”, “catalog_eav_attribute.sql”, “categorias.sql”, “clientes.sql”, “sales.sql” y a “productos.sql” todos con el arreglo de

DROP TABLE IF EXISTS `xxxxxx-atributo-xxxxxx`;
CREATE TABLE `xxxxxx-atributo-xxxxxx`

13.- Ir al admin, deshabilitar la cache, hacer un reindex data y verás a la cara de la virgen Maria bella e inmaculada!

Atte

Boris Durán R.

Importar products, category, customers, sales y attributes Magento
5 (100%) 14 votos

Comentarios

Comentarios

(6) Comments

  1. hahahahahahaha Que loco que eres mi hermano!!! Tienes razón. cuando se migra y se instalan módulos va quedan flor de desastre. te voy a armar un script que automatice esto así se evita errores humanos

    Un abrazo

  2. Hola Richard, sí has de tu genialidad y armate algo decende… que esto lo hice a mi manera neandertal pero su fundamento es lógico y coherente… demoré semanas en entender como estaba todo encadenado…

    Saludos…

  3. Pingback: Migrar tienda desde base de datos | Servicios Magento

  4. Hola Boris, Primero que todo mil gracias por tus Guías siempre me han ayudado mucho! Y justo ahora estaba intentando importar muuuuchoooooss productos, categorias, etc… de una tienda a otra pero como no soy especialista en el tema y he aprendido hechando a perder… me queda una duda cuando dices que hay que “intervenir cada atributo”… Eso lo haces directamente en el PHPMyAdmin? o usas otra herramienta? y mas menos cuales serían los pasos a seguir? Muchas Gracias!!

    Daniela.

  5. Hola Daniela,

    Hay que intervenir cada tabla descargada, por ejemplo la tabla “cataloginventory_stock” está así:

    CREATE TABLE `cataloginventory_stock`

    Y debe de quedar así:

    DROP TABLE IF EXISTS `cataloginventory_stock`;
    CREATE TABLE `cataloginventory_stock`

    Mándame un archivo sql (tabla) y te la modifico y así puedes ir guiandote. Mi correo es bduran@magentochile.cl

    Saludos,

    Boris D.

  6. Hola, muchas gracias con el tutorial. Lo he seguido paso a paso pero no me permite importar las tablas me marca el siguiente error:
    #1215 – Impossible d’ajouter des contraintes d’index externe

    A pesar de tener agregado la instruccion:
    SET FOREIGN_KEY_CHECKS=0;

    No se que puedo estar haciendo mal.

    Mi versión de magento es la 1.9.1

    Espero alguien pueda orientarme un poco para poder dar con el problema…

Leave a Reply

You must be logged in to post a comment.