Can anyone confirm for me that the best way to move entries from one channel to another is to export the entries, then import the entries? I can't find an addon that will map custom fields from one channel to the custom fields from another channel to make that move. (I ask because I'm optimizing the content model and hope to get rid of about ten channels with similar custom fields that can use categories instead to differentiate them.)


1 Answer 1


If you're not planning to do this via MySQL. Then I'd probably recommend the following add-ons to assist you in the process:

  • Andrew Weaver's AJW Export This will allow you to export your items from the channels you want to remove as .csv or .xml to re-import back into the system.

  • Andrew Weaver's DataGrab This will allow you to map the data back into the system.

Alternatives for exporting would be Eric Lambs, Export It. And an Alternative for importing would be Solspace's Importer.

I frequently just do MySQL queries, but when the jobs quick or needs to be repeated regularly, I admit Andrew and his company BrandNewBox have been a godsend. It's like we share some data cleaning and migration synergy.

Don't be afraid to add a spreadsheet in there to check that all the data came out properly formatted and ready to import back into the system. But overall, Andrew's stuff is easy to set-up, easy to use.

  • Thanks for the response! I, too, would be absolutely lost without DataGrab. I had forgotten about AJW Export. And I'm much too skittish working directly in MySQL.
    – Brett
    Commented Feb 27, 2013 at 17:42
  • I'd be interested in hearing how to do this with MySQL, could you explain?
    – kmgdev
    Commented Jun 19, 2013 at 18:58
  • Generally my process is something like. CREATE a data map ( field_id_34 => field_id_12 ) etc.; BACKUP database; EXPORT data as INSERT statements; DELETE old data, because you'll be re-using the IDs; OPEN insert export in a text editor; FIND and REPLACE using mapping data (so INSERT INTO exp_channel_data (field_id_34) VALUEs() becomes INSERT INTO exp_channel_data (field_id_12 VALUEs()); UPDATE the channel_id, in titles as well. Use Sequel Pro or whatever to run the new INSERT file. I find using INSERT over UPDATE less complicated and faster. I may be missing a step, my laptop is in shop. Commented Jun 26, 2013 at 0:22
  • You can also use PHP to perform the field map updates. That's typically what one of my other developers does. And if there are a lot of fields, say over 30, it may work better, if you're fluent in PHP and good at whipping out quick scripts. PHP scripting is far more time consuming for me, so using BBEdit, FIND & REPLACE, works pretty fast, generally under an hour, full process. Though maybe longer the first few times, I did it. The important thing is number of fields, not amount of data. Process can move 10 records or 150,000 records. But find & replace 50x is tedious and mistake prone. Commented Jun 26, 2013 at 0:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.