Dataflow Import/Export Profiles

Updated . Posted . Visible to the public.

Import Sample Actions XML:

<action type="dataflow/convert_adapter_io" method="load">
   <var name="type">file</var>
   <var name="path">var/import</var>
   <var name="filename"><![CDATA[filename.csv]]></var>
   <var name="format"><![CDATA[csv]]></var>
 </action>
<action type="dataflow/convert_parser_csv" method="parse">
    <var name="delimiter"><![CDATA[,]]></var>
    <var name="enclose"><![CDATA["]]></var>
    <var name="fieldnames"></var>
    <var name="map">
        <map name="Col Name in File"><![CDATA[fieldname_in_system]]></map>
        <map name="First Name"><![CDATA[firstname]]></map>
        <map name="Last Name"><![CDATA[lastname]]></map>
        <map name="dob"><![CDATA[dob]]></map>
        <map name="gender"><![CDATA[gender]]></map>
        <!-- and so on for each column in the file -->
    </var>
    <var name="store"><![CDATA[0]]></var>
    <var name="number_of_records">1</var>
    <var name="decimal_separator"><![CDATA[.]]></var>
    <var name="adapter">customer/convert_adapter_customer</var>
    <var name="method">parse</var>
</action>

Restrictions on the File to be Imported

  1. The columns must be in a predefined ordering.
  2. Each field name must be predefined or map.

Export CSV with Advanced Profile

Sample in data upgrade:

$installer = $this;

/** @var Mage_Dataflow_Model_Profile $model */
$model = Mage::getModel('dataflow/profile')->load('Export COFs', 'name');
if (!$model->getId()) {
    $model->setData('name', 'Export COFs');
    $model->setData('store_id', 0);
    $model->setData(
        'actions_xml',
'<action type="cof/convert_adapter_record" method="load">
    <var name="filter/prefix"><![CDATA[A]]></var>
</action>

<action type="cof/convert_parser_record" method="unparse">
    <var name="fields/cof_type"><![CDATA[simka]]></var>
</action>

<action type="dataflow/convert_mapper_column" method="map">
</action>

<action type="dataflow/convert_parser_csv" method="unparse">
    <var name="delimiter"><![CDATA[,]]></var>
    <var name="enclose"><![CDATA["]]></var>
    <var name="fieldnames">true</var>
</action>

<action type="dataflow/convert_adapter_io" method="save">
    <var name="type">file</var>
    <var name="path">var/export</var>
    <var name="filename"><![CDATA[simka.csv]]></var>
    <var name="link">/adminhtml/simka/downloadExportCsv/file/simka.csv</var>
</action>'
    );
    $model->save();
}

How to Update Profile Run Progress by AJAX

In order to dynamically view the progress on the browser, we need to assign an adapter to the batch object in the convert model.

$adapterName = $this->getVar('adapter', null);
Mage::getSingleton('dataflow/batch')
    ->setParams($this->getVars())
    ->setAdapter($adapterName)
    ->save();

The adapter model:

class Some_Module_Model_Convert_Adapter_SomeName extends Mage_Dataflow_Model_Convert_Adapter_Abstract

See class Mage_Customer_Model_Convert_Adapter_Customer extends Mage_Eav_Model_Convert_Adapter_Entity

See app\design\adminhtml\default\default\template\system\convert\profile\process.phtml

kiatng
Last edit
kiatng
Tags
Posted by kiatng to OpenMage (2020-12-31 01:04)