Reputation: 155
I have a folder with many DB.sql.gz files, i want to import them all into a new installation of MySQL Server in one go.
I thought using bash script would be a good idea.
So Far, I have this file as an executable.
#!/bin/sh
for filename in *.gz;
do
tempfile="${z##*/}";
database_name = "${tempfile%.*}";
echo database_name;
mysql -pPASS -u USER;
CREATE DATABASE database_name;
unzip z | mysql -pPASS -uUSER database_name;
done
Whats going wrong is that when taking the 'filename' in the for loop, i cant string manipulate to to remove the extension, I want to do this because the database files are named as the database. ( just want to remove the .sql.gz to get the db name )
Help appreciated
Upvotes: 0
Views: 1641
Reputation: 781096
#!/bin/sh
for filename in *.gz;
do
tempfile="${filename##*/}"
database_name="${tempfile%%.*}"
echo $database_name
mysql -pPASS -u USER -e "CREATE DATABASE $database_name"
gzcat $filename | mysql -pPASS -uUSER $database_name
done
$z
should be $filename
.=
in assignments$
before many variable uses.CREATE DATABASE
command, use the -e
option to mysql
gzcat
to expand a .gz
file to stdout.${tempfile%.*}
should be ${tempfile%%.*}
. %
removes the shortest match of the pattern, %%
removes the longest match. This will remove all the suffixes.Upvotes: 1