Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • Databases
  • SQL
  • MySQL
  • PostgreSQL
  • PL/SQL
  • MongoDB
  • SQL Cheat Sheet
  • SQL Interview Questions
  • MySQL Interview Questions
  • PL/SQL Interview Questions
  • Learn SQL and Database
Open In App
Next Article:
How to Get Counts of all Tables in a Schema in PL/SQL?
Next article icon

Copy a Table from One Schema to Another in SQL?

Last Updated : 23 Jan, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

When working with MySQL, there are several scenarios where we may need to copy tables (including their structure and data) from one schema (database) to another. This is a common task during database migrations, backups, or when testing with different environments. In this article, we will go through the process of copying tables in MySQL from one schema to another.

How to Copy a Table from One Schema to Another?

We will discuss some methods that help to copy a table from one schema to Another in MySQL are defined below:

Method 1: Using CREATE TABLE with INSERT INTO Statements

This is the most direct and basic method for copying a table including its data from one schema to another.

Example:

Suppose we have two schemas named source_schema and target_schema and we want to copy a table of employees from source_schema to target_schema.

-- Step 1: Create the table in the target schema
CREATE TABLE target_schema.employees LIKE source_schema.employees;

-- Step 2: Copy data from the source table to the target table
INSERT INTO target_schema.employees SELECT * FROM source_schema.employees;

Explanation:

  • The CREATE TABLE target_schema.employees LIKE source_schema.employees; command creates a new table employees in the target_schema, replicating the structure of the original employees table from the source_schema.
  • The INSERT INTO target_schema.employees SELECT * FROM source_schema.employees; command copies the data from the source table to the newly created table.

Method 2: Using mysqldump for More Complex Copies

If we need to copy multiple tables or the entire database, mysqldump is an excellent tool. It allows us to dump the table structure and data into a file which we can then import into the target schema.

Example:

Suppose we need to copy the `employees` table by including its structure and data from the `source_schema` to the `target_schema` in MySQL. This can be achieved by exporting the table to a dump file using `mysqldump` and then importing the file into the target schema using the `mysql` command.

# Dump the table from the source schema to a file
mysqldump -u username -p source_schema employees > employees_dump.sql

# Import the dump into the target schema
mysql -u username -p target_schema < employees_dump.sql

Explanation:

  • The first command dumps the employees table from the source_schema into the employees_dump.sql file.
  • The second command imports the dumped file into the target_schema schema, recreating the employees table along with the data.

Method 3: Using SELECT INTO OUTFILE and LOAD DATA INFILE

If we want to export the table data to a file and then load it into another schema, we can use SELECT INTO OUTFILE followed by LOAD DATA INFILE.

Example:


-- Step 1: Export the data from the source schema to a file
SELECT * INTO OUTFILE '/path/to/employees.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM source_schema.employees;

-- Step 2: Load the data into the target schema
LOAD DATA INFILE '/path/to/employees.csv'
INTO TABLE target_schema.employees
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';

Explanation:

  • The SELECT INTO OUTFILE command exports the employees table from the source_schema into a CSV file (employees.csv).
  • The LOAD DATA INFILE command reads the CSV file and imports the data into the employees table in the target_schema.

Method 4: Using INSERT INTO SELECT for Individual Tables

If we don't need to duplicate the entire table structure and only need to copy the data, we can use the INSERT INTO SELECT method. This can be useful for copying data between tables with the same structure.

Example:

-- Copy data from employees in source schema to employees in target schema
INSERT INTO target_schema.employees (id, name, department, salary)
SELECT id, name, department, salary FROM source_schema.employees;

Explanation:

This command directly copies the data from employees in the source_schema to employees in the target_schema. You must ensure that the columns in both tables have the same structure.

Method 5: Copying All Tables from One Schema to Another

If you need to copy all tables from one schema to another, you can combine the previous methods with a script to dynamically generate the CREATE TABLE and INSERT INTO statements for each table.

Example:

-- List all tables in the source schema
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'source_schema';

-- Generate CREATE TABLE statements for each table
-- For each table:
SET @table_name = 'employees'; -- Replace with the table you want to copy
SET @create_table_sql = CONCAT('CREATE TABLE target_schema.', @table_name, ' LIKE source_schema.', @table_name);
PREPARE stmt FROM @create_table_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- Copy data from source to target
SET @insert_sql = CONCAT('INSERT INTO target_schema.', @table_name, ' SELECT * FROM source_schema.', @table_name);
PREPARE stmt FROM @insert_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Explanation:

This script dynamically generates CREATE TABLE and INSERT INTO statements for all tables in the source_schema and copies them to the target_schema.

Conclusion

Overall, Copying tables and data from one schema to another in MySQL can be achieved using a variety of methods, depending on the complexity of your task. For simple table copies, using CREATE TABLE LIKE and INSERT INTO SELECT is sufficient. For more complex scenarios or entire schema migrations tools like mysqldump or LOAD DATA INFILE may be more appropriate. Before performing any copying operations which ensure that you have the necessary permissions on both the source and target schemas. Additionally, consider any dependencies, foreign keys, or triggers that may need to be recreated or adjusted in the target schema.


Next Article
How to Get Counts of all Tables in a Schema in PL/SQL?

G

GFG_DevOps Cloud DB_Editor
Improve
Article Tags :
  • SQL
  • Databases

Similar Reads

  • How to Copy Rows from One Table to Another in SQL?
    In SQL, copying rows from one table to another is a common operation that simplifies data migration and duplication tasks. Whether creating backup tables, transferring data for analysis, or setting up a new schema, the ability to efficiently replicate data across tables is invaluable. This operation
    3 min read
  • How to Create One Table From Another Table in SQL
    Creating a table based on the structure and data of an existing table is a common task in database management. This process allows us to replicate a table for backup, testing or data transformation purposes. SQL provides efficient methods to create one table from another while preserving the schema,
    3 min read
  • How to Copy Data From One Column to Another in the Same Table in SQL?
    Efficiency in data manipulation is crucial while using Structured Query Language (SQL). To manage a wide range of tasks, including organizing, retrieving, updating, and deleting data, SQL provides a comprehensive set of instructions. Among these, copying data between columns in the same table is a c
    4 min read
  • How to Copy Table to Another Table in SQL
    Copying data from one table to another is a common task in SQL whether we are migrating data by creating backups or simply duplicating a table's structure and content for further use. In this article, we'll explore several ways to copy a table to another table in SQL Server including copying both th
    4 min read
  • How to Get Counts of all Tables in a Schema in PL/SQL?
    In Database Management System, it is essential to retrieve the statistical information about tables with the schema. Whether it is for monitoring the database health, optimizing the performance, or simply understanding the data structures having access to row counts of the tables can be more valuabl
    5 min read
  • How to Export Database and Table Schemas in SQLite?
    Exporting database schemas in SQLite is an important task for database management, enabling functions like data backup, recovery, migration, and auditing. In this article, We will go through the process of exporting database and table schemas in SQLite by understanding various examples to manage SQL
    4 min read
  • How to Show Schema of a Table in MySQL Database?
    A table schema in MySQL database defines the structure of table, including columns, data types, relationships between columns, etc. It is a blueprint for the table, describing how data is organized in the table and how it relates to other tables in the database. To see the schema of a table in MySQL
    2 min read
  • How to Update From One Table to Another Based on an ID Match in SQL
    In SQL, updating data between tables is a common operation used to maintain data consistency and accuracy across related datasets. Whether we need to synchronize records, update fields, or correct discrepancies, SQL provides efficient methods to achieve this. In this article, we will explain how to
    4 min read
  • How to Drop All Tables from PostgreSQL
    In PostgreSQL, managing our database often includes tasks like creating, modifying, and sometimes removing tables. If we want to clear our database and remove all tables, we can do this efficiently with a few PostgreSQL commands. To clear our database without deleting the entire schema, we can drop
    5 min read
  • SQL Query to Get Column Names From a Table
    SQL stands for Structured Query Language. It is a language used to interact with the database, i.e to create a database, to create a table in the database, to retrieve data or update a table in the database, etc. SQL is an ANSI(American National Standards Institute) standard. Using SQL, we can do ma
    2 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences