I have written an awk script that converts a distributor flatfile into a CSV importable into Magento. This file is semi-colon delimited.
It is not putting quotes around each field like the importer requires. It works fairly well, but is causing some issues on the data import without the enclosing double quotes. I spent a couple hours trying to figure out how to add this to the existing script, without much luck. Any help would be greatly appreciated - I am pretty new to AWK.
Current Output
store;websites;attribute_set;type;category_ids;sku;has_options;name;meta_title;meta_description;image;small_image;thumbnail;url_key;url_path;config_attributes;custom_design;page_layout;options_container;country_of_manufacture;msrp_enabled;msrp_display_actual_price_type;gift_message_available;rsr_pn;manufacturer_pn;price;special_price;cost;weight;msrp;status;visibility;manufacturer;enable_googlecheckout;tax_class_id;is_recurring;description;short_description;meta_keyword;custom_layout_update;news_from_date;news_to_date;special_from_date;special_to_date;custom_design_from;custom_design_to;qty;min_qty;use_config_min_qty;is_qty_decimal;backorders;use_config_backorders;min_sale_qty;use_config_min_sale_qty;max_sale_qty;use_config_max_sale_qty;is_in_stock;low_stock_date;notify_stock_qty;use_config_notify_stock_qty;manage_stock;use_config_manage_stock;stock_status_changed_auto;use_config_qty_increments;qty_increments;use_config_enable_qty_inc;enable_qty_increments;is_decimal_divided;stock_status_changed_automatically;use_config_enable_qty_increments;product_name;store_id;product_type_id;product_status_changed;product_changed_websites;gallery;related;upsell;crosssell;tier_prices;associated;bundle_options;grouped;group_price_price;downloadable_options;super_attribute_pricing;product_tags admin;base;Default;simple;2,35,36;844802016148;0;5.11 HOLSTER SHIRT L WHITE;;;/5/1/511-40011-010-L_1.jpg;/5/1/511-40011-010-L_1.jpg;/5/1/511-40011-010-L_1.jpg;511-40011-010-L;511-40011-010-L.html;;;No layout updates;Block after Info Column;;Use config;Use config;No;511-40011-010-L;40011;74.99;;48.00;5;74.99;Enabled;Catalog, Search;5.11 Tactical;Yes;Taxable Goods;No;5.11 Tactical Short Sleeve Shirt L White Holster Shirt Crew 40011;5.11 Tactical Short Sleeve Shirt L White Holster Shirt Crew 40011;;;;;;;;;0;0;1;0;0;1;1;1;0;1;1;;;1;0;1;0;1;0;1;0;0;0;1;5.11 HOLSTER SHIRT L WHITE;0;simple;;;;;;;;;;;;;;
Desired Output
"store";"websites";"attribute_set";"type";"category_ids";"sku";"has_options";"name";"meta_title";"meta_description";"image";"small_image";"thumbnail";"url_key";"url_path";"config_attributes";"custom_design";"page_layout";"options_container";"country_of_manufacture";"msrp_enabled";"msrp_display_actual_price_type";"gift_message_available";"rsr_pn";"manufacturer_pn";"price";"special_price";"cost";"weight";"msrp";"status";"visibility";"manufacturer";"enable_googlecheckout";"tax_class_id";"is_recurring";"description";"short_description";"meta_keyword";"custom_layout_update";"news_from_date";"news_to_date";"special_from_date";"special_to_date";"custom_design_from";"custom_design_to";"qty";"min_qty";"use_config_min_qty";"is_qty_decimal";"backorders";"use_config_backorders";"min_sale_qty";"use_config_min_sale_qty";"max_sale_qty";"use_config_max_sale_qty";"is_in_stock";"low_stock_date";"notify_stock_qty";"use_config_notify_stock_qty";"manage_stock";"use_config_manage_stock";"stock_status_changed_auto";"use_config_qty_increments";"qty_increments";"use_config_enable_qty_inc";"enable_qty_increments";"is_decimal_divided";"stock_status_changed_automatically";"use_config_enable_qty_increments";"product_name";"store_id";"product_type_id";"product_status_changed";"product_changed_websites";"gallery";"related";"upsell";"crosssell";"tier_prices";"associated";"bundle_options";"grouped";"group_price_price";"downloadable_options";"super_attribute_pricing";"product_tags" "admin";"base";"Default";"simple";"2,35,36";"844802016148";"0";"5.11 HOLSTER SHIRT L WHITE";"";"";"/5/1/511-40011-010-L_1.jpg";"/5/1/511-40011-010-L_1.jpg";"/5/1/511-40011-010-L_1.jpg";"511-40011-010-L";"511-40011-010-L.html";"";"";"No layout updates";"Block after Info Column";"";"Use config";"Use config";"No";"511-40011-010-L";"40011";"74.99";"";"48.00";"5";"74.99";"Enabled";"Catalog, Search";"5.11 Tactical";"Yes";"Taxable Goods";"No";"5.11 Tactical Short Sleeve Shirt L White Holster Shirt Crew 40011";"5.11 Tactical Short Sleeve Shirt L White Holster Shirt Crew 40011";"";"";"";"";"";"";"";"";"0";"0";"1";"0";"0";"1";"1";"1";"0";"1";"1";"";"";"1";"0";"1";"0";"1";"0";"1";"0";"0";"0";"1";"5.11 HOLSTER SHIRT L WHITE";"0";"simple";"";"";"";"";"";"";"";"";"";"";"";"";"";"
Script - rsrimport.awk
#!/bin/awk -f # ---------------------------------------------------------------------------------------- # Copyright (c) 2012 - 2013 John Steensen <[email protected]> # All rights reserved. No warranty, explicit or implicit, provided. # ---------------------------------------------------------------------------------------- # AWK Processing # Updated 03DEC2012@1552 MST # ---------------------------------------------------------------------------------------- # Warnings/Dependancy Notes # AWK # ---------------------------------------------------------------------------------------- BEGIN { FS=";"; OFS=";"; CATEGORY="47"; IMAGE="imagepathfail"; URLKEY="urlkeyfail"; URLPATH="urlpathfail"; print "store", "websites", "attribute_set", "type", "category_ids", "sku", "has_options", "name", "image", "small_image", "thumbnail", "url_key", "url_path", "page_layout", "options_container", "msrp_enabled", "msrp_display_actual_price_type", "gift_message_available", "rsr_pn", "manufacturer_pn", "price", "cost", "weight", "msrp", "manufacturer", "status", "is_recurring", "visibility", "enable_googlecheckout", "tax_class_id", "description", "short_description", "qty", "min_qty", "use_config_min_qty", "is_qty_decimal", "backorders", "use_config_backorders", "min_sale_qty", "use_config_min_sale_qty", "max_sale_qty", "use_config_max_sale_qty", "is_in_stock", "notify_stock_qty", "use_config_notify_stock_qty", "manage_stock", "use_config_manage_stock", "stock_status_changed_auto", "use_config_qty_increments", "qty_increments", "use_config_enable_qty_inc", "enable_qty_increments", "is_decimal_divided", "stock_status_changed_automatically", "use_config_enable_qty_increments", "product_name", "store_id", "product_type_id"; } { # DEFINE CATEGORY if ($4=="1") CATEGORY="2,3,4"; else if ($4=="2") CATEGORY="2,3,7"; else if ($4=="3") CATEGORY="2,3,8"; else if ($4=="4") CATEGORY="2,3,22,23"; else if ($4=="5") CATEGORY="2,3,5"; else if ($4=="7") CATEGORY="2,3,6"; else if ($4=="8") CATEGORY="2,27,28"; else if ($4=="9") CATEGORY="2,27,29"; else if ($4=="10") CATEGORY="2,9,13"; else if ($4=="11") CATEGORY="2,9,14"; else if ($4=="12") CATEGORY="2,35,38"; else if ($4=="13") CATEGORY="2,9,16"; else if ($4=="14") CATEGORY="2,35,37"; else if ($4=="15") CATEGORY="2,19,21"; else if ($4=="16") CATEGORY="2,9,15"; else if ($4=="17") CATEGORY="2,9,16"; else if ($4=="18") CATEGORY="2,19,20"; else if ($4=="20") CATEGORY="2,27,33"; else if ($4=="21") CATEGORY="2,9,17"; else if ($4=="22") CATEGORY="2,3,22,24"; else if ($4=="23") CATEGORY="2,3,22,25"; else if ($4=="24") CATEGORY="2,9,13"; else if ($4=="25") CATEGORY="2,40,43"; else if ($4=="26") CATEGORY="2,40,44"; else if ($4=="27") CATEGORY="2,3,22,26"; else if ($4=="28") CATEGORY="2,27,31"; else if ($4=="29") CATEGORY="2,27,32"; else if ($4=="30") CATEGORY="2,27,30"; else if ($4=="31") CATEGORY="2,27,34"; else if ($4=="32") CATEGORY="2,9,11"; else if ($4=="33") CATEGORY="2,35,36"; else if ($4=="34") CATEGORY="2,9,10"; else if ($4=="35") CATEGORY="2,9,18"; else if ($4=="36") CATEGORY="2,40,42"; else if ($4=="38") CATEGORY="2,40,41"; else if ($4=="39") CATEGORY="2,40,45"; else if ($4=="40") CATEGORY="2,35,39"; else if ($4=="41") CATEGORY="2,9,12"; else if ($4=="43") CATEGORY="2,9,12"; else if ($4=="01") CATEGORY="2,3,4"; else if ($4=="02") CATEGORY="2,3,7"; else if ($4=="03") CATEGORY="2,3,8"; else if ($4=="04") CATEGORY="2,3,22,23"; else if ($4=="05") CATEGORY="2,3,5"; else if ($4=="07") CATEGORY="2,3,6"; else if ($4=="08") CATEGORY="2,27,28"; else if ($4=="09") CATEGORY="2,27,29"; else CATEGORY="47"; # DEFINE IMAGE WITH PATH. IMAGE="/5/1/"$1"_1.jpg"; # DEFINE URL KEY URLKEY=$1; # DEFINE URL PATH URLPATH=$1".html"; print "admin", "base", "Default", "simple", CATEGORY, $1, "0", $3, IMAGE, IMAGE, IMAGE, URLKEY, URLPATH, "No layout updates", "Block after Info Column", "Use config", "Use config", "No", $1, $12, $6, $7, $8, $6, $11, "Enabled", "No", "Catalog, Search", "Yes", "Taxable Goods", $14, $14, $9, "0", "1", "0", "0", "1", "1", "1", "0", "1", "1", "0", "1", "0", "1", "0", "1", "0", "1", "0", "0", "0", "1", $3, "0", "simple"; } END {}
If you want:
add this to the existing script.
You can insert additional \"\"
in each argument of print
like this:
print "\"admin\"", "\"base\"", ...
Edited:
Yes, perhaps seting OFS is better solution:
BEGIN { OFS="\";\""; } ... print "\"admin", ...., "simple\"";
awk '{for (i=1;i<=NF;i++) $i="\""$i"\""}1' FS=";" OFS=";" input
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With