Last updated 8 January 2017. Created on 4 May 2012.
Edited by dremy, jacobbednarz, HongPong, geerlingguy. Log in to edit this page.

Typically when migrating content, drush is your friend. Drush commands are provided for managing the migration process. Individual migrations can be imported and then rolled back. Running processes can be cleanly interrupted, individual source records can be migrated on their own, and performance can be instrumented.

drush help --filter=migrate provides a complete list of relevant commands.

All commands

migrate-analyze (maz) Analyze the source fields for a migration.
migrate-audit (ma) View information on problems in a migration.
migrate-register (mreg) Register or re-register any statically defined migrations.
migrate-deregister Remove all tracking of a migration
migrate-fields-destination (mfd) List the fields available for mapping in a destination.
migrate-fields-source (mfs) List the fields available for mapping from a source.
migrate-import (mi) Perform one or more migration processes
migrate-mappings (mm) View information on all field mappings in a migration.
migrate-messages (mmsg) View any messages associated with a migration.
migrate-reset-status (mrs) Reset a active migration's status to idle
migrate-rollback (mr) Roll back the destination objects from a given migration
migrate-status (ms) List all migrations with current status.
migrate-stop (mst) Stop an active migration operation
migrate-wipe (mw) Delete all nodes from specified content types.

For examples on the options type:
drush help <command>

drush mi --help


migrate-import Article
Import new articles

migrate-import Article --update
Import new items, and also update previously-imported items

migrate-import Article --idlist=4,9
Import two specific articles. The ids refer to the value of the primary key in base table.
This allows you to cherry-pick specific, individual source records to migrate (so you don't have to sit through an entire migration whilst debugging) with, for example: drush mi LibraryDocument --idlist=48,52,108 to pull in only items with ids 48,52, and 108

migrate-import Article --limit="60 seconds" --stop --rollback
Import for up to 60 seconds after stopping and rolling back the Article migration.

migrate-import Article --limit="100 items"
Import up to 100 items from the migration named Article.*

migrate-import User --feedback="1000 items"
Display a progress message every 1000 processed items or less*

*NOTE: You cannot use --limit and --feedback at the same time.

migrate-import --all=User
Perform User migrations and all that follow it.


Name of migration(s) to import. Delimit multiple using commas.


Process all migrations that come after the specified migration. If no value is supplied, all migrations are processed.

Frequency of progress messages, in seconds or items processed

Override file function to use when migrating images.

Force an operation to run, even if all dependencies are not satisfied

Name of the migration group to run

A comma delimited list of ids to import or rollback. If unspecified, migrate imports all pending items or rolls back all items for the content set.

Capture performance information (timer, memory, or all)

Limit on the length of each migration process, expressed in seconds or number of items

Reimport up to 10K records where needs_update=1. This option is only needed when your Drupal DB is on a different DB server from your source data. Otherwise, these records get migrated with just migrate-import.

Rollback specified migration(s) if applicable.

Stop specified migration(s) if applicable.

In addition to processing unimported items from the source, update previously-imported items with new data


You need to run drush from the directory where the Drupal site is installed.

See also: Drush helps reliable migrate performance by eliminating timeouts and other limitations.

Looking for support? Visit the forums, or join #drupal-support in IRC.