If you ever need something more advanced than what MC offers itself in this regard, I included
a handy utility in MCAutoQueue that can handle all sorts of "replacing" tasks in MC. It is called MCFileIngester, and its available free over in that thread. It is still beta, but it works quite well. It is mostly beta because I haven't finished documentation yet (sorry, I've been working on something else for it, and I've been quite busy at work the past few months).
Basically, it allows you to replace an existing file (or files) in MC's database without losing any tag data at all, via a variety of handy mechanisms.
The thread has some detailed descriptions, but here are some of the basics...
* The application has two primary "source modes": Single File and Playlist. This should be pretty straightforward, but Single File operates only on a single set of files (an existing one and a new one to "replace" the existing one), whereas Playlist mode takes a Playlist in MC as the Source and does the same operation on each file in the list(s).
* There are three different "Ingestion Modes" you can use (along with one advanced mode you can use to combine them based on special tags you add to MC's Library). These are:
1. Standard: Simple. You provide a filename of the file that is already in MC, and a new filename to use to "replace" it (the new file can either be completely unimported or already in MC, it doesn't matter). Then, it does the replacement/ingestion operation on these two files. If you have it in Playlist mode, you provide it with two playlists (a "source files" playlist and a "new files" playlist) and it goes through and does each of them in order (order of the playlists counts, so item one in the source list matches item one in the new list, and so on and so forth).
2. Change Extension: Even simpler. You provide the filename of the "source file" that is already in MC, and then the extension of the new file you've created. This assumes the filenames and paths of the files are identical except for the file extension. This works well if you've already ripped the files with MC to a new format (like if you re-rip old 128k MP3s to new, fancy FLAC files, for example), and they're already all in the "right spot" and you just want to move all of the metadata over. This also works with Playlists, you just don't need to provide a "new files" playlist (because it uses the extension).
3. Stack Swap: This is the fanciest mode, and is quite clever and handy, once you know how it works. Say you want to re-rip all of those old 128k MP3s to FLAC, but getting the filenames and tags to all match perfectly (other than the extension) in order to use Change Extension mode is a pain in the butt (maybe because you manually tagged the old files by hand a lot, and when MC does they YADB lookup everything doesn't quite match right). This makes it so you don't need to worry about it. Instead, just import all of those new files into MC, and match them with the files you want to replace
inside MC. To match them, you stack them with their "old" versions. Make the "new files" (the ones with the crappy metadata but the nice quality) the "Stack Top" of each stack. This should be quite easy with MC's built in Auto-Stacking capabilities, so long as the "basic tags" (Artist, Album, and Track Number) match, and then select the files and do Right Click > Stack > Advanced > Autostack by X. The key is, make the new files the Stack Top (it'll ask you which to use when you do the Autostack thing).
Then, run MCFileIngester and give the "old file" (the one with the good metadata but the bad quality) as the Source File (or add them all to a Playlist to process a bunch at once), and run MCFileIngester on it. It'll clone the metadata from the given old file over to whatever file is the current Stack Top (optionally removing the old file when it is done).
* There are a bunch of other options for the way the Ingest process can work. The normal mode (I described above) would be "Replacement" (the "new file"
replaces the "source file", which is removed from MC and can optionally be deleted from disk too). However, you can also:
Clone: Just copy the metadata from the Old file to the New file, and leave both of them in the database.
Stack With Source: Stack the old and new files together (optionally cloning the metadata from the old to the new, and optionally making the "new file" the Stack Top).
And there's other handy options in there too. For example, the different "clone" modes have a Only Clone Playstats mode which allows you to just clone "Playstats" (and [Rating] and [Date Imported] and whatnot). This can be handy if the new file has better tags overall (you worked on it when you re-ripped them, maybe, or YADB got better since the old rip), but you want to preserve your ratings and whatnot.
It can be driven from the command line, or from the GUI, and it works very nicely with MCAutoQueue to automate the process if you'd like. And, I used audio files as my examples above, but it was really designed to solve this same problem for my Video files (which I automatically convert after they've already been imported into MC). It'll work on any file type MC can use (even documents and stuff).