Alex,
Tags are stored in 3 key tables - t_connectortag, t_attributetag and t_objectproperties.
What I do is created a flattened selfjoining view (requires DBMS deployment), then use column based "pasting" via MS Access.
For example (SQLServer)
create view my_apps
as
select t_object.name, prop1.value as "licenses", prop2.value as "vendor"
from t_objectproperties prop1 with (nolock), t_objectproperties prop2 with (nolock), t_object with (nolock)
where t_object.stereotype = 'foo'
and t_object.object_id = prop1.object_id and prop1.property = 'Licenses'
and t_object.object_id = prop2.object_id and prop2.property = 'Vendor'
The above will give you the licenses and vendor tagged values for all your objects with stereotype "foo" as defined in your profile.
Create an ODBC datasource to your SQL database.
Open up MS Acces -> linked table manager -> link to the my_apps "table"
Open the table. You can now do column based pasting or updates. Note you can only do one column at a time per row (as SQL Server gets confused on which table to update if more than one column per row is updated). However, you can select say 5 rows of data in a spreadsheet / CSV within one column - then "paste" that into MS Access to update it.
I actually use a SQL / DTS based version for bulk loading aka Thomas, but the above is useful for a little manual maintenance or for nonSQL skilled people.
PS: The "with (nolock)" prevents SQL Server from placing a read lock on rows read by the MS Acces cursor. Otherwise, EA users will "freeze" when someone opens up the MS access view (since MS access will be read locking the rows EA users are trying to update). Of course there are concurrency issues, but you have to decide which in your environment is the lesser of the evils.
Cheers,
david.