Working on a project that requires the conversion of OS Commerce to Ubercart/Drupal6.
The company sells roses, and each Rose has 15+ informative fields (CCK will handle this) and 1 attribute (size) with three options. Relatively simple, except for getting the data out of OSCommerce and into Ubercart. OS Commerce has been highly customized to manage stock levels and sales for each product variant, but does not have a unique SKU for each variant.
So we are using a technique involving Node Import, Custom SQL Queries, and some plain old by-hand data work to massage the information into Ubercart. I would highly suggest reviewing the database tables of OsCommerce and Ubercart first, as Ubercart's Attributes, Options, Adjustments, and Stock level tables are meant to somewhat "ease the pain of transition", as far as I can tell. Another exciting front I learned about after the end of this project is the Table Wizard and Migrate Module, which if you google, also has a Ubercart sub-module for product imports. It won't do the trick for everything, but it excels in the area of bringing in past orders, customers, and addresses along with the Product Info. Every solution is only 90% complete it seems, so you will have to probe around a bit to get it right.
This Drupal module seems to do the trick for importing attributes and options. Will post more information about the project as I go.
http://www.ubercart.org/project/node_import_uc_stock
http://www.ubercart.org/project/node_import
Update - Project Details and How we are going to do it
Used a query like this for exporting their product_extra_fields , and then exporting as .CSV using PHPMyAdmin, so we could prepare for Node Import. Needed to do it this way because they stored their fields on OS Commerce with the Extra Fields mod, which has a rather strange way of storing the data.
SELECT products_id,
max( if( products_extra_fields_id = '1', products_extra_fields_value, 0 ) ) AS band_avail,
max( if( products_extra_fields_id = '2', products_extra_fields_value, 0 ) ) AS 1_gal_avail,
max( if( products_extra_fields_id = '3', products_extra_fields_value, 0 ) ) AS 2_gal_avail,
max( if( products_extra_fields_id = '4', products_extra_fields_value, 0 ) ) AS 5_gal_avail,
max( if( products_extra_fields_id = '5', products_extra_fields_value, 0 ) ) AS class,
max( if( products_extra_fields_id = '6', products_extra_fields_value, 0 ) ) AS height,
max( if( products_extra_fields_id = '7', products_extra_fields_value, 0 ) ) AS growth_habit,
max( if( products_extra_fields_id = '8', products_extra_fields_value, 0 ) ) AS color,
max( if( products_extra_fields_id = '9', products_extra_fields_value, 0 ) ) AS bloom_size,
max( if( products_extra_fields_id = '10', products_extra_fields_value, 0 ) ) AS bloom_type,
max( if( products_extra_fields_id = '11', products_extra_fields_value, 0 ) ) AS rebloom,
max( if( products_extra_fields_id = '12', products_extra_fields_value, 0 ) ) AS fragrance,
max( if( products_extra_fields_id = '13', products_extra_fields_value, 0 ) ) AS hybridizer,
max( if( products_extra_fields_id = '14', products_extra_fields_value, 0 ) ) AS date_introduced,
max( if( products_extra_fields_id = '15', products_extra_fields_value, 0 ) ) AS disease_resistant,
max( if( products_extra_fields_id = '16', products_extra_fields_value, 0 ) ) AS shade_tolerance,
max( if( products_extra_fields_id = '17', products_extra_fields_value, 0 ) ) AS thorns,
max( if( products_extra_fields_id = '23', products_extra_fields_value, 0 ) ) AS new_rose,
max( if( products_extra_fields_id = '24', products_extra_fields_value, 0 ) ) AS hips,
max( if( products_extra_fields_id = '25', products_extra_fields_value, 0 ) ) AS fall_color,
max( if( products_extra_fields_id = '26', products_extra_fields_value, 0 ) ) AS difficult_locations,
max( if( products_extra_fields_id = '27', products_extra_fields_value, 0 ) ) AS good_for_cutting,
max( if( products_extra_fields_id = '28', products_extra_fields_value, 0 ) ) AS good_for_drying,
max( if( products_extra_fields_id = '29', products_extra_fields_value, 0 ) ) AS ground_cover,
max( if( products_extra_fields_id = '30', products_extra_fields_value, 0 ) ) AS hedge,
max( if( products_extra_fields_id = '31', products_extra_fields_value, 0 ) ) AS pots,
max( if( products_extra_fields_id = '32', products_extra_fields_value, 0 ) ) AS price_and_size,
max( if( products_extra_fields_id = '34', products_extra_fields_value, 0 ) ) AS image_type,
max( if( products_extra_fields_id = '35', products_extra_fields_value, 0 ) ) AS date_search_range,
max( if( products_extra_fields_id = '36', products_extra_fields_value, 0 ) ) AS image_of_bush,
max( if( products_extra_fields_id = '37', products_extra_fields_value, 0 ) ) AS image_prefix,
max( if( products_extra_fields_id = '38', products_extra_fields_value, 0 ) ) AS sort_id,
max( if( products_extra_fields_id = '39', products_extra_fields_value, 0 ) ) AS zone,
max( if( products_extra_fields_id = '41', products_extra_fields_value, 0 ) ) AS status,
max( if( products_extra_fields_id = '42', products_extra_fields_value, 0 ) ) AS climbing,
max( if( products_extra_fields_id = '43', products_extra_fields_value, 0 ) ) AS crl,
max( if( products_extra_fields_id = '44', products_extra_fields_value, 0 ) ) AS band_sales,
max( if( products_extra_fields_id = '45', products_extra_fields_value, 0 ) ) AS gallon_sales,
max( if( products_extra_fields_id = '46', products_extra_fields_value, 0 ) ) AS 5_gallon_sales,
max( if( products_extra_fields_id = '47', products_extra_fields_value, 0 ) ) AS preorder_date,
max( if( products_extra_fields_id = '48', products_extra_fields_value, 0 ) ) AS preorder_inventory,
max( if( products_extra_fields_id = '49', products_extra_fields_value, 0 ) ) AS preband_sales,
max( if( products_extra_fields_id = '50', products_extra_fields_value, 0 ) ) AS pregallon_inventory,
max( if( products_extra_fields_id = '51', products_extra_fields_value, 0 ) ) AS pregallon_sales,
max( if( products_extra_fields_id = '52', products_extra_fields_value, 0 ) ) AS map_location,
max( if( products_extra_fields_id = '53', products_extra_fields_value, 0 ) ) AS price_grouping,
max( if( products_extra_fields_id = '54', products_extra_fields_value, 0 ) ) AS collection,
max( if( products_extra_fields_id = '55', products_extra_fields_value, 0 ) ) AS limited_stock,
max( if( products_extra_fields_id = '56', products_extra_fields_value, 0 ) ) AS awards,
max( if( products_extra_fields_id = '57', products_extra_fields_value, 0 ) ) AS spring_crop
FROM products_to_products_extra_fields GROUP BY products_id
