Reputation: 766
I am trying to create a file and store in it the results from my query. I have a batch file that contains the single query,
USE database1;
SELECT * FROM table WHERE name = "abc" INTO OUTFILE output.txt;
QUIT
Executing this batch file using,
mysql -u root -p -t -vvv < select.sql
However, the result is not table formatted and fields' names are missing from the top.
100 abc Brown 32
101 abc Flair 25
102 abc McDonald 45
.
.
.
If I remove the INTO OUTFILE statement and print the results on terminal, then is working OK.
+----+------+---------+-----+
| id | name | surname | age |
+----+------+---------+-----+
| 100| abc | Brown | 32|
| 101| abc | Flair | 25|
| 102| abc | McDonald| 45|
+----+------+---------+-----+
How can I achieve the above in a txt file?
UPDATE
Special thanks to GreyBeardedGeek. Here is the solution for this question with help of GreyBeardedGeek.
Batch file:
USE database1;
SELECT * FROM table WHERE name = "abc";
QUIT
and mysql client:
mysql -u root -p -t -vvv < select.sql > output.txt
Upvotes: 10
Views: 8667
Reputation: 16361
Besides using mysql client program options (mysql --help) one can configure defaults within .my.cnf file. Example (MacOs, Linux) to enable --table option:
edit/create a file:
vim ~/.my.cnf
add/update:
[client]
table
next time you call mysql command line program it will use options from .my.cnf file producing output in table format, e.g. the same as one has called:
mysql ... --table ...
Please note that command line options override options from the .my.cnf files.
References:
mysql --help
for list of optionsUpvotes: 0
Reputation: 1
You can also do following:
mysql -uroot -p DatabaseName -t -e "select * from table" > file.txt
This doesn't need to make an SQL file and then filter out the first line.
Upvotes: 0
Reputation: 30088
This should do the trick:
mysql -u root -p -t -vvv < select.sql | sed '1 d' > output.txt
Upvotes: 5