We've used DataFactory (used to be called TestBase) from Quest Software. It's very good to create certain types of data like a load of names and addresses. However, if you have a large data model, it may not be that suitable as you spend a huge amount of time configuring the tool(but could well be the same for other data generators as well). I'd definately recommend downloading a timebombed version and taking a look.
I have a solution but may not be very attractive. Instead of using a particular tool, we use automation tool for this. Generally we record the script for one operation and then put that in a large loop (with same/different values).
In the past I have used three approaches for creating test data.
1) Sometimes I use Excel. It's not hard to use it to produce small-to-medium amounts of random, but properly formatted data.
2) I have used whatever automated test tool I happened to own. Most test tools have randomizing and formatting functions that allow you to easily create test data. The data can be written to a flat file for importing into the database, or played in through the user interface of the application.
3) I have used commercial tools similar to the ones that have already been mentioned.