First you will need to manually create the table tha has all of the unique columns in an all of your tables
put a primary key on email, base_name, location.
The main problem with this approach is that rows that are matched by the Primary key with identical columns that contain different data will be overwritten by the most recent update.
You can generate an insert statement for each of your tables the following querys will give you the list of columns
for your select by comparing table1 to the new table & the columns to update (if not empty).
(change the table number below to generate the data for each of your tables)
SELECT GROUP_CONCAT(NVL(b.COLUMN_NAME,CONCAT('NULL AS ',a.column_name))) as sel_cols
FROM INFORMATION_SCHEMA.COLUMNS a
LEFT JOIN INFORMATION_SCHEMA.COLUMNS b ON a.column_name = b.column_name and b.table_name='table1' and b.table_schema = b.table_schema
WHERE a.table_name = 'new_table' AND b.table_schema = database()
to get the list of columns to update
SELECT GROUP_CONCAT(CASE WHEN b.column_name IS NOT NULL THEN CONCAT(b.column_name,'=VALUES(',b.column_name,')') ELSE END) as upd_cols
FROM INFORMATION_SCHEMA.COLUMNS a
LEFT JOIN INFORMATION_SCHEMA.COLUMNS b ON a.column_name = b.column_name and b.table_name='table1' and b.table_schema = b.table_schema
WHERE a.table_name = 'new_table' AND b.table_schema = database()
e.g:
col1, col2, NULL as col3
col1 = VALUES(col1), col2 = VALUES(col2)
now paste the column list & table name into an insert...
INSERT INTO new_table (select col1,col2,NULL as col3 FROM table1)
ON DUPLICATE KEY UPDATE col1 = VALUES(col1), col2 = VALUES(col2)
It should be easy to change the sql to generate the exact statements you require, and for all of the tables.
perhaps put a column that will show the fact that an over write has occured and where the original column came from,
so you can manually resolve the confict