I’ve used this combination of model/controller/script to add product import functionality to a couple of projects now.
It’s a fairly simple (but easy to extend), drop-in Spree extension that adds an interface to the Administration area that allows a user to select and upload a CSV file containing information on products.
The script portion of this extension then reads the file, creating products with associated information, and
finding, attaching and saving images and taxonomies to the product object.
The extension closely resembles Shopify’s product importer in the functionality provided – Delayed Job is used to enable large imports to run in the background, with no user interaction necessary. Product images can be attached by either specifying a location or disk or a URL, and nested levels of taxonomies are supported.