11

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?

1

2 Answers 2

16

You can not do that natively, but here's simple bash command:

for sql_file in `ls -d /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
Sign up to request clarification or add additional context in comments.

2 Comments

Here is why ls might be bad as listed here stackoverflow.com/a/2152795/1896134 Please look at momer's comment. mywiki.wooledge.org/ParsingLs
The ls command as it was previously written wasn't functional. It would list off the files in the directory but without the /path/to/ prefix, thus it wouldn't run anything.
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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.