Skip to content

Commit

Permalink
Create MergeTwoDB.sh
Browse files Browse the repository at this point in the history
Adding MySQL two databases merge to new
  • Loading branch information
gedOHub authored Jun 20, 2017
1 parent e66d961 commit af3042c
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions MySQL/MergeTwoDB.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/bin/bash
# Author: Gediminas Jančys
# Website: https://blog.jancys.net
# User to login to MySQL server
user="root"
# Database name containing older data than another
older_DB="older_DB"
# Database name containing newer data than another
newer_DB="current_DB"
# Merged database name
merged="merged_DB"
echo "Exporting database structure"
# Exporting database structure
mysqldump -u$user -p --no-data $newer_DB > struct.sql
# Creating new databse
echo "Creating $merged database"
mysql -u$user -p --execute="CREATE DATABASE $merged"
# Filling in database structure
echo "Importing $merged structure"
mysql -u$user -p $merged < struct.sql
# Getting tables in database
echo "Getting database table list"
tables=`mysql -u$user -p $merged --execute="SHOW TABLES;"`
# Generating SQL to merge older data to new database
for table in $tables; do
if [ $table = "Tables_in_$merged" ]; then
# Skipping title entry
continue
fi
# Generating SQL staitment
SQL="INSERT IGNORE INTO $merged.$table\nSELECT *\nFROM $older_DB.$table;";
# Writting SQL to SQL file
echo $SQL >> SQL.sql
done
# Generating SQL to merge newer data to new database
for table in $tables; do
if [ $table = "Tables_in_$merged" ]; then
# Skipping title entry
continue
fi
# Generating SQL staitment
SQL="INSERT IGNORE INTO $merged.$table\nSELECT *\nFROM $newer.$table;";
# Writting SQL to SQL file
echo $SQL >> SQL.sql
done
# Merging data
echo "Merging data"
mysql -u$user -p $merged < SQL.sql

0 comments on commit af3042c

Please sign in to comment.