aunque si no tengo alternativa lo haré.Noumaios escribió:y si importas directamente el archivo sql no te sería mas cómodo?
Carga los 3 CSV en un array cada uno, con un bucle dentro de un bucle dentro de un bucle, vas buscando donde coinciden los id, y cuando encuentres la coincidencia en el bucle interior, pues amplias el array de productos con el nombre de categoria, y cuando termines, pues grabas el nuevo array en formato CSV.
Estoy dando por hecho que tienes unos conocimientos de programacion para ello, o....?
Descripcion mas grafica:Cargar de CSVs en arrays x3
for (){ <--- arrayProductos
for(){ <--- arrayCategoriaProducto
if (categoria[id_producto] == producto[id]){
for(){<---- arrayNombreCategoria
if (categoria[id]== nombreCat[id]){
arrayProductos[i][categoria] = nombreCat[id]
}
}
}
}
}
Guarda el arrayProductos actualizado en formato CSV
Te pego un codigo en PHP que tenia por ahi para leer CSV a array// **** Leer CSV y guardarlo en un array asosiativo
if ($gestor = fopen("prueba.csv", "r")) {
if ($key = fgetcsv($gestor, 1000, ";")) { // En la primera linea estan los titulos de columna
$indiceArray = 0;
while ($filaCSV = fgetcsv($gestor, 1000, ";")) {
foreach ($filaCSV as $indice => $valor){
$arrayCSV[$indiceArray][$key[$indice]] = $valor;
}
$indiceArray++;
}
} else exit("Error al leer la primera linea del archivo CSV.");
fclose($gestor);
} else exit("Error al leer el archivo CSV.");
noentiendero escribió:Antes de nada, el título del hilo no sé cuán bien definirá mi pregunta, porque es algo bastante lioso como para resumir en el título, y no supe qué otra cosa poner![]()
Tengo el siguiente problemilla: tengo un listado de productos en un archivo CSV, exportado de una tienda online para importarlo en otra tienda online (estoy haciendo una migración de CMSs). El CSV tiene todos los datos principales de todos los productos que están en la tienda, salvo uno muy importante: la categoría. El problema es que son cientos/¿miles? de artículos, y poner la categoría manualmente es algo infiernoaunque si no tengo alternativa lo haré.
Cada artículo tiene una ID numérica, y buceando en la base de datos SQL, me encontré con una relación de los artículos con las categorías, asociando sus IDs. Es decir, tengo filas de texto en las que pone todas las ID de todos los artículos de la tienda, con al lado la ID de la categoría a la que pertenece (aunque en artículos con varias categorías se repiten, esto es algo que tendré que ver cómo subsanar luego). Luego tengo otra lista que relaciona las ID de cada categoría con el nombre legible que tienen.
Pues bien, lo que quisiera hacer sería, que en el CSV, se añadiese a todos los productos una columna donde se especificase/n su/s categoría/s, según la relación de ID producto-ID categoría que tengo. ¿Alguien sabe cómo podría hacer esto de una forma automática?
Noumaios escribió:prueba esto https://gist.github.com/stefanbc/1a2046d996ee60765b4a
jazcks escribió:noentiendero escribió:Antes de nada, el título del hilo no sé cuán bien definirá mi pregunta, porque es algo bastante lioso como para resumir en el título, y no supe qué otra cosa poner![]()
Tengo el siguiente problemilla: tengo un listado de productos en un archivo CSV, exportado de una tienda online para importarlo en otra tienda online (estoy haciendo una migración de CMSs). El CSV tiene todos los datos principales de todos los productos que están en la tienda, salvo uno muy importante: la categoría. El problema es que son cientos/¿miles? de artículos, y poner la categoría manualmente es algo infiernoaunque si no tengo alternativa lo haré.
Cada artículo tiene una ID numérica, y buceando en la base de datos SQL, me encontré con una relación de los artículos con las categorías, asociando sus IDs. Es decir, tengo filas de texto en las que pone todas las ID de todos los artículos de la tienda, con al lado la ID de la categoría a la que pertenece (aunque en artículos con varias categorías se repiten, esto es algo que tendré que ver cómo subsanar luego). Luego tengo otra lista que relaciona las ID de cada categoría con el nombre legible que tienen.
Pues bien, lo que quisiera hacer sería, que en el CSV, se añadiese a todos los productos una columna donde se especificase/n su/s categoría/s, según la relación de ID producto-ID categoría que tengo. ¿Alguien sabe cómo podría hacer esto de una forma automática?
es un csv, lo puedes abrir en excel entonces
en ese excel, hay algunas formulas/funciones que podrian ayudarte
imagina que tienes la columna ID producto, y quieres otra columna a la derecha con el ID categoria suyo
podrias usar la formula "BUSCARV" , que tiene varios parametros
basicamente tienes que buscar en otra hoja del excel donde tengas la relacion de producto y categoria.
la formula te permitira coger el valor de la categoria de un producto dado (la primera hoja), y rellenarse automaticamente
WaterDark escribió:Carga los 3 CSV en un array cada uno, con un bucle dentro de un bucle dentro de un bucle, vas buscando donde coinciden los id, y cuando encuentres la coincidencia en el bucle interior, pues amplias el array de productos con el nombre de categoria, y cuando termines, pues grabas el nuevo array en formato CSV.
Estoy dando por hecho que tienes unos conocimientos de programacion para ello, o....?
Descripcion mas grafica:Cargar de CSVs en arrays x3
for (){ <--- arrayProductos
for(){ <--- arrayCategoriaProducto
if (categoria[id_producto] == producto[id]){
for(){<---- arrayNombreCategoria
if (categoria[id]== nombreCat[id]){
arrayProductos[i][categoria] = nombreCat[id]
}
}
}
}
}
Guarda el arrayProductos actualizado en formato CSV
Te pego un codigo en PHP que tenia por ahi para leer CSV a array// **** Leer CSV y guardarlo en un array asosiativo
if ($gestor = fopen("prueba.csv", "r")) {
if ($key = fgetcsv($gestor, 1000, ";")) { // En la primera linea estan los titulos de columna
$indiceArray = 0;
while ($filaCSV = fgetcsv($gestor, 1000, ";")) {
foreach ($filaCSV as $indice => $valor){
$arrayCSV[$indiceArray][$key[$indice]] = $valor;
}
$indiceArray++;
}
} else exit("Error al leer la primera linea del archivo CSV.");
fclose($gestor);
} else exit("Error al leer el archivo CSV.");
Edit: Acabo de darme cuenta que quizas he dado demasiadas cosas por hecho... asi que tengo que preguntarte, ¿sabes que el CSV que has sacado de oscommerce, aunque le añadas el nombre de categoria, casi seguro que no puedes importarlo a prestashop mediante la opcion de importar CSV???
Un CSV es una estructurade datos generica, luego cada programa organiza los datos de una forma, por lo que el CSV que sale de oscommerce no esta organizado de la forma que utiliza prestashop o cualquier otro CMS, necesitas un proceso intermedio especifico para realizar la importacion de un CMS a otro CMS diferente, que entienda ambos CMS, como por ejemplo, seguramente lo que te enlace el compañero Noumaios mas abajo.
aunque puedo darle una intentona a los scripts. Aunque CSV no son 3, es uno sólo, luego tengo en formato texto esas relaciones de productoid-categoríaid y categoríaid-categoríanombre, aunque si hay que "convertirlos" con alguna sintaxis especial se podría hacer con un buscar y reemplazar creo.