Importar muestra el mensaje de error "Los nombres de columna tienen duplicados" pero no tengo ningún duplicado.
¿A quién puedo arreglar esto?
"_type","sku","has_options","name","image","small_image","thumbnail","url_key","url_path","price","manufacturer","status","tax_class_id","visibility","description","short_description","gift_message_available","qty","min_qty","is_qty_decimal","backorders","min_sale_qty","max_sale_qty","is_in_stock","notify_stock_qty","manage_stock","qty_increments","enable_qty_increments"
"simple","1174407","0","BCI-15BK Tintenpatrone schwarz","","","","","","22.000","Canon","Enabled","none","Catalogue,Search","BCI-15BK Tintenpatrone schwarz, 2er-Pack, für I70 NSTintenpatronenOriginalML","BCI-15BK Tintenpatrone schwarz, 2er-Pack, für I70 NSTintenpatronenOriginalML","","0","","","0","1","","","","","","0"
Me aseguré de que todos mis campos también existan en csv exportado. ¿Me faltan algunas filas obligatorias? Traté de verificar pero esta página wiki de 2012 requiere columnas que ni siquiera están en el archivo exportado. Por lo tanto, no estoy seguro de cuáles son las columnas requeridas.
La versión de PHP es 5.2.17
ce-1.7.0.2
import
PiTheNumber
fuente
fuente
/admin/import
, no el antiguo flujo de datos.Respuestas:
La excepción con el mensaje de error que indicó se activa exactamente en un lugar (código ligeramente truncado para facilitar la lectura):
Esto significa que
count(array_unique($this->_colNames))
debe ser desigual a$this->_colQuantity
La
$_colNames
matriz está configuradaMage_ImportExport_Model_Import_Adapter_Csv::rewind()
(que se llama durante_init()
.Una vez más, el código está ligeramente truncado para facilitar la lectura:
El
$_delimiter
se establece en,
, el$_enclosure
se establece en"
.Para intentar reproducir el problema, si copio el extracto CSV de su pregunta en un archivo llamado test.csv y ejecuto el siguiente código:
Produce el siguiente resultado:
Esto significa que su archivo CSV está fundamentalmente bien. La diferencia debe estar en otro lugar.
Mirando cómo
array_unique
funciona, hay una nota de cómo cambió el manejo de tipos de elementos de matriz en PHP 5.2.9: http://php.net/manual/en/function.array-unique.php#refsect1-function.array-unique -changelogPara reproducir el problema, volví a ejecutar mi script de prueba con el
SORT_REGULAR
conjunto de opciones, pero esto todavía da el mismo resultado (lo cual es lógico, ya que leer un archivo solo puede dar valores de cadena).En este momento, creo que la diferencia debe estar en el archivo CSV que está utilizando. Los caracteres de nueva línea de Unix y Windows (
\n
y\r\n
) son reconocidos por elfgetcsv()
comando, pero el antiguo carácter de nueva línea de estilo MacOS (\r
) en realidad conduciría al comportamiento que está experimentando.No puedo saber si esa es la razón por la que está experimentando el problema, pero le sugiero que revise el archivo CSV (nuevamente). También podría ayudar si proporciona un enlace de descarga en algún lugar del archivo no modificado (sin pastebin), de modo que se conservan los caracteres no imprimibles.
También podría ayudar si publica la versión de PHP que está utilizando.
fuente
Recibí este error al editar y guardar usando LibreOffice en mi Mac. El problema se resolvió editando el archivo usando Google Drive, luego el error desapareció.
Supongo que se debe a los finales de línea de Mac.
fuente
Si verificó la codificación de nueva línea y aún tiene problemas, verifique que en realidad no tenga un nombre de columna duplicado en su CSV. En Excel, puede resaltar rápidamente los duplicados con esta técnica:
En mi caso, había arrastrado una fórmula (sin querer) a la fila del encabezado y estropeé mi encabezado.
fuente
También puede guardar el archivo .csv (usando una Mac) como un .csv con formato de Windows. Esto solucionará el mensaje de error de columnas duplicadas. Trabajo en una Mac y así es como evito estos errores de importación. Espero que funcione para ti.
fuente