Getting products into Magento (Magento Enterprise Solutions, Magento Community or Magento Go) presents many challenges that can be solved with just a few key practices. Follow these simple steps to ensure your imports go smoothly.
1. Use Dataflow Profiles
The classic —import— and —export— functions (the non-dataflow functions) are not consistent. I recommend the more robust and extensive featured within the Dataflow profiles.
2. Let Magento build your template for you
Do not even think about building your own import CSV template. Make sure you have at least one product inserted for each of your attribute sets, and perform an export. The exported CSV is now your import template.
3. Use Excel, Save As —MS-DOS Comma Separated (.csv)—
The document formatting needs to be UTF-8, and this mode ensures the correct formatting.
4. Watch out for special characters
We had a scenario that even the above encoding did not catch. The product description included the word —d√©cor— - and Excel replaced the —√©— with a character that looked like a comma, but was not the same as a standard UTF-8 comma. This special character prevented the import of that single product, and did so with a —blank— for an error.
5. Do not change the column headers
The first row of the import CSV file has a list of the columns being imported. Do not make any changes to any content on this row. A simple misspelling, or a tweak on any of the headers can cause very unpredictable results on the import.
6. Place your import images in the /media/import folder
Each image must be brought in and processed during the import. The raw, source images should be uploaded to the /media/import folder - and have the exact same filename as is inserted into the spreadsheet.
7. If errors occur, use the source code to determine which row failed
When a single error happens, the message does not include any significant details that help you determine which row the problem occurred in. However, you can inspect the source code of the error to determine the row number. The error will have an id, with the row number of the data error. If the error row has id='id-6', then the 6th row of the import spreadsheet is the source of the problem.