I have a folder with o lot of sql scripts. I want to run all of them without specifying names of them. Just specify a folder name. Is it possible?
Asked
Active
Viewed 1.1k times
8
-
http://dev.mysql.com/doc/refman/5.0/en/batch-mode.html – Nagaraj S Dec 27 '13 at 10:12
2 Answers
14
You can not do that natively, but here's simple bash command:
for sql_file in `ls /path/to/directory`; do mysql -uUSER -pPASSWORD DATABASE < $sql_file ; done
here USER, PASSWORD and DATABASE are the corresponding credentials and /path/to/directory is full path to folder that contains your files.
If you want to filter, for example, only sql files, then:
for sql_file in `ls /path/to/directory/*.sql`; do mysql -uUSER -pPASSWORD DATABASE < $sql_file ; done
Alma Do
- 36,374
- 9
- 70
- 101
-
Here is why `ls` might be bad as listed here https://stackoverflow.com/a/2152795/1896134 Please look at momer's comment. http://mywiki.wooledge.org/ParsingLs – JayRizzo Jun 20 '17 at 23:40
2
That was what worked for me: 1. Created a shell script in the folder of my scripts
for f in *.sql
do
echo "Processing $f file..."
mysql -u user "-pPASSWORD" -h HOST DATABASE < $f
done
eduardocurva
- 21
- 2