diff --git a/salsa_entity.drush.inc b/salsa_entity.drush.inc
index 433a38c..21a6782 100644
--- a/salsa_entity.drush.inc
+++ b/salsa_entity.drush.inc
@@ -15,7 +15,11 @@ function salsa_entity_drush_command() {
   $items['salsa-entity-export'] = array(
     'description' => dt('Export all objects of the given type'),
     'arguments' => array(
-      'type' => dt('The salsa type, e.g. donate_page'),
+      'types' => dt('The salsa types (comma separated), e.g. supporter,donate_page.'),
+    ),
+    'options' => array(
+      'paging' => dt('Number of records per file.'),
+      'directory' => dt('Destination folder for the exported files.'),
     )
   );
   $items['salsa-entity-import'] = array(
@@ -29,25 +33,74 @@ function salsa_entity_drush_command() {
 
 /**
  * Export salsa entities.
+ *
+ * @param string  $types  The salsa type, e.g. donate_page.
+ *
+ * @return mixed
  */
-function drush_salsa_entity_export($type = NULL) {
-  if (!$type) {
-    return drush_set_error(dt('You need to provide a salsa type.'));
+function drush_salsa_entity_export($types = NULL) {
+  if (!$types) {
+    // @todo If types attribute is not specified, try to get all (in use) Salsa tables or display error message.
   }
+  $types = array_filter(explode(',', $types), 'trim');
 
-  $entities[$type] = array();
-  foreach (entity_load('salsa_' . $type) as $entity) {
-    // Extract all relevant properties, filter out empty ones.
-    $entities[$type][$entity->identifier()] = array_filter(get_object_vars($entity));
+  $directory = drush_get_option('directory', 'public://salsa');
+  if (!file_prepare_directory($directory)) {
+    return drush_set_error(dt('You need to create and set writable permissions manually for @directory directory.', array('@directory' => $directory)));
   }
 
-  $header = '<?php
-// Exported Salsa entities for ' . $type . "\n\n";
+  $paging = drush_get_option('paging', 500);
+  if ($paging > 500) {
+    return drush_set_error(dt('Number of records per file can not be bigger than 500.'));
+  }
+
+  $entity_info = entity_get_info();
+  foreach ($types as $type) {
+    if (array_key_exists('salsa_' . $type, $entity_info)) {
+      $subdirectory = $directory . '/' . $type;
+      if (!file_prepare_directory($subdirectory)) {
+        return drush_set_error(dt('You need to create and set writable permissions manually for @subdirectory directory.', array('@subdirectory' => $subdirectory)));
+      }
+
+      // Remove previously exported files if any.
+      $files = scandir($subdirectory);
+      foreach ($files as $file) {
+        if ($file != '.' && $file != '..') {
+          drupal_unlink($subdirectory . '/' . $file);
+        }
+      }
+
+      $offset = 0;
+      $sequence = 0;
+
+      while (TRUE) {
+        if ($entities = salsa_api()->getObjects($type, array(), $offset . ',' . $paging)) {
 
-  drush_print($header);
+          $destination = $subdirectory . '/' . $type . '_' . $sequence . '.csv';
+          $fp = fopen($destination, 'w');
 
-  // Export data.
-  drush_print('$entities = ' . var_export($entities, TRUE) . ';');
+          foreach ($entities as $entity) {
+            $entity = array_filter(get_object_vars($entity));
+            foreach ($entity as $key => &$value) {
+              $value = $key . '|' . $value;
+            }
+
+            fputcsv($fp, $entity);
+          }
+
+          fclose($fp);
+
+          $sequence++;
+          $offset = $offset + $paging;
+
+          drush_print(dt('Successfully created @destination file.', array('@destination' => $destination)));
+        }
+        else {
+          break;
+        }
+      }
+    }
+  }
 }
 
 function drush_salsa_entity_import($file = NULL) {
