I have made heavy modifications to EQExtractor and posted it here:
https://code.google.com/p/projecteqdb/downloads/list
It simplifies IDs a bit by removing many that aren't needed (since they use auto-increment), adds new features, and fixes a few bugs. I have to merge some of my work into the EQEmu SVN, as some of the bugs are severe (like for example, the grid DELETE is NOT safe - it WILL delete grids in multiple zones!) But, most of my features will remain exclusive to my version since to be honest they are more meant for experienced world builders. Derision's version is safe relatively speaking, but some of the check boxes in my version can really mess you up if you don't know what you are doing - so just a word of warning.
The IDs PEQ uses are simple... NPCID starts at zoneid*1000. spawn2, spawngroup, objects, ground_spawns are all incremental, grids are incremental BY zoneid (something that needs to be fixed in the stock EQExtractor) as are doors. Merchantlist should be just the NPCID, but admittedly we have lost our way in regards to that, however I will be fixing that soon.
By default, neither version of EQExtractor will give you the proper IDs for spawn2, spawngroup, grids, doors, or merchantlist (my version does not require IDs for other tables.) It has no connection to MySQL, so it has no way of knowing what the next available ID is. That's why Derision was awesome to have the queries use variables. That way, we can pass our outputted SQLs around, and not have to worry about IDs conflicting. PEQ SVN is ALWAYS behind (even if it was updated the same day) so I'm going to have to change IDs anyway.