Dealing with Very Large Product Catalog

If this is a redundant thread, please redirect and advise me. Simply, I built and ran a jewelry website back in the late '90's to mid 00's, and we had a very large catalog of items. To edit them I downloaded the .csv file, edited the products (add, delete, edit) in a spreadsheet, and simply uploaded the new sheet and the entire catalog, or category of products were updated. Note that I am fairly good with databases and SQL. The last year I have built a Drupal site using U-Cart and was/am amazed that this scenario has not been thought about. Is this being addressed with DC, or or we still stuck? (Hope....hope...). Uber's and Drupal's database is incredibly normalized, that trying to reverse-engineer it to write a query to produce a master table just made me cry. We have thousands of product items and are eager for a solution. If anyone is working on an idea I am offering my help. If there is a solution, my ears are open.

Posted: Oct 2, 2012


GalCo on October 2, 2012

I add this as this is the main thing that makes any shopping cart database complicated. The old site employed carat-delimited fields in same row of product table. What is it (Join or Union or what) but it takes the mother of all SQL queries with ubercart...

joshmiller Josh Miller on October 3, 2012

There are a lot of relationships, fields, and media to think about with a periodic "import" the way you are describing. I'd recommend building this functionality with http://drupal.org/project/feeds , http://drupal.org/project/feeds_tamper , and http://drupal.org/project/commerce_feeds (to support creating products and product displays), and http://drupal.org/project/views_data_export (to support a CSV download of your entire catalog).

What feeds can do once it's setup:

1) It can deal with relationships like the Product > Product Display

2) It can import media for image fields from existing URLs (upload a folder of images to your site, run feeds on a CSV that links to files from within that folder, and they get uploaded and added to your products)

3) With feeds tamper, you can create "arrays" of internal data for media or taxonomy fields

4) Most importantly, once you've got feeds importing your products / product displays, you can simply upload a revised copy of the first import and it will only update those products that have changed, or "disable" those that have been disabled.

5) And you could use Views_Data_Export to create a downloadable CSV of your catalog. Hard to say if this would be a workable solution, but it stands to reason you could do this.

I must warn you that this tends to feel tenuous and has a bad habit of breaking on malformed content. Another solution (perhaps better?) is to simply create a large View that is output to a table and install http://drupal.org/project/editablefields for that entire View. Then you could treat your website like a spreadsheet and go through and update it in a much more solid fashion. (Even works with media!).