You can duplicate a table without data by running:
CREATE TABLE x LIKE y;
(See the MySQL CREATE TABLE Docs)
You could write a script that takes the output from
SHOW TABLES from one database and copies the schema to another. You should be able to reference schema+table names like:
CREATE TABLE x LIKE other_db.y;
As far as the data goes, you can also do it in MySQL, but it’s not necessarily fast. After you’ve created the references, you can run the following to copy the data:
INSERT INTO x SELECT * FROM other_db.y;
If you’re using MyISAM, you’re better off to copy the table files; it’ll be much faster. You should be able to do the same if you’re using INNODB with per table table spaces.
If you do end up doing an
INSERT INTO SELECT, be sure to temporarily turn off indexes with
ALTER TABLE x DISABLE KEYS!