Ron LeVine wrote:

I am helping a friend with "OSCommerce" which is a PHP/MySQL based eCommerce solution. She gets a .csv file from her supplier with all the products available and rather than hand enter/modify 20,000 products, it would be nice to just have MySQL just import them.

The file is a CSV export from Excel in the form of:


SKU
        ITEMID
        DESCRIPTION
VENDOR CAT
        PRICE
        Weight
        SIZE
        UNIT
SUB-CATEGORY STATUS
         FR
        LA
        AT
        CH
        DA
        HO
        KA
        NJ
        TA
        MI
        PO
        LR


The MySQL DB record structure has some of these catagories, but not all and has some catagories that are not listed here that are used for site maintenance.

So, I need to parse the file for the info that is needed and stick it into the relavant records. Doing a wholesale batch import isn't really feasable.

Thanks again,
Ron

(omissions for brevity)

Ron LeVine
Since lines of data can sometimes have blanks, a good approach would be to export the Excel file to a CSV file using a field separator character that is unlikely to be used within a field - I often use the pipe (|). Then an AWK (gawk) script can parse the line for fields ... for example (in a BASH shell script) let us assume you only wanted fields 1 and 3 ...

while read Line
do
   Field1=`echo $Line | gawk -F\| '{ print $1 }'`
   Field3=`echo $Line | gawk -F\| '{ print $3 }'`
  (insert SQL statement here to insert/update record to table)
done < $inputfilename

Hope this helps
Regards
Fred James

PS: I am not sure of the syntax in MySQL, but in SQL*Plus (the Oracle version) the SQL statement could be embedded at the point indicated above like this ...

sqlplus $USER_NAME/[EMAIL PROTECTED] << EOF
insert into shema.tablename (column1, column2) values ('${Field1}', '${Field2}');
exit
EOF

(where SID is site ID (database name), and the second EOF must start in column 1 of the code file).

_______________________________________________
EUGLUG mailing list
[email protected]
http://www.euglug.org/mailman/listinfo/euglug

Reply via email to