If you are in charge of managing a database server, from time to time you may need to run a query and inspect it carefully. While you can do that from the MySQL / MariaDB shell, but this tip will allow you to execute the MySQL/MariaDB Queries directly using the Linux command line AND save the output to a file for later inspection (this is particularly useful if the query return lots of records).
Let us look at some simple examples of running queries directly from the command line before we can move to a more advanced query.
To view all the databases on your server, you can issue the following command:
# mysql -u root -p -e "show databases;"
Next, to create a database table named
tutorials in the database
tecmintdb, run the command below:
$ mysql -u root -p -e "USE tecmintdb; CREATE TABLE tutorials(tut_id INT NOT NULL AUTO_INCREMENT, tut_title VARCHAR(100) NOT NULL, tut_author VARCHAR(40) NOT NULL, submissoin_date DATE, PRIMARY KEY (tut_id));"
We will use the following command and pipe the output to the
tee command followed by the filename where we want to store the output.
For illustration, we will use a database named
employees and a simple join between the employees and salaries tables. In your own case, just type the SQL query between the quotes and hit Enter.
Note that you will be prompted to enter the password for the database user:
# mysql -u root -p -e "USE employees; SELECT DISTINCT A.first_name, A.last_name FROM employees A JOIN salaries B ON A.emp_no = B.emp_no WHERE hire_date < '1985-01-31';" | tee queryresults.txt
View the query results with the help of cat command.
# cat queryresults.txt
With the query results in a plain text files, you can process the records more easily using other command-line utilities.
Do you have any other tips that you would like to share with the rest of the community? If so, please do so using the comment form below.
Otherwise, feel free to let us your thoughts about the assortment of tips that we have looked at, or what we can add or possibly do to improve each of them. We look forward to hearing from you!