MySQL pipe
sqlallows you to pipe STDIN (hopefully containing SQL) to one or more pre-configured MySQL databases- output comes out in
\t-separated format, allowing further piping (e.g. works really well with chart) - when more than one database is queried, the requests are made in parallel
sqlcan either runmysqllocally, runmysqllocally but connecting to a remote host (by configuring adbServer), orsshto a remote host and from there runmysqlto either a local or remote host (by configuring anappServerand adbServer)
Get the latest binary on the Releases section, or via go get:
go get -u github.com/MarianoGappa/sql
Create a .databases.json dotfile in your home folder or in any XDG-compliant directory. This is an example file.
cat query.sql | sql test_db
sed 's/2015/2016/g' query_for_2015.sql | sql db1 db2 db3
echo "SELECT * FROM users WHERE name = 'John'" | sql all
- when more than one database is queried, the resulting rows are prefixed with the database identifier
- the
allspecial keyword means "sql to all configured databases" sqlassumes that you have correctly configured SSH keys on all servers yousshto- please note that
~/.databases.jsonwill contain your database credentials in plain text; if this is a problem for you, don't usesql! sqlis meant for automation of one-time lightweight ad-hocSELECTs on many databases at once; it's not recommended for mission critical bash scripts that do destructive operations on production servers!
- mysql
- ssh (only if you configure an "appServer")
If you have an issue with sql, I'd love to hear about it. PRs are welcome. Ping me on Twitter if you want to have a chat about it.