コマンドラインからmysqlを介して単一のクエリをどのように実行しますか?


157

スクリプト化されたタスクでリモートサーバー上で単一のクエリを実行できるようにしたいと考えています。

たとえば、直感的には、次のようになると思います。

mysql -uroot -p -hslavedb.mydomain.com mydb_production "select * from users;"

回答:


249
mysql -u <user> -p -e "select * from schema.table"

3
C:\ Program Files(x86)\ MySQL \ MySQL Server 5.7 \ bin> mysql.exe -u root -p -e "my query" ----> ERROR 1045(28000):Access denied for user 'root' @ 'localhost'(パスワードを使用:YES)
Dr.jacky

2
これは、巨大なmysqlサイトではなく、Google検索(「コマンドラインからのmysql exec sql」の場合)の最初の結果になるはずです。
ギヨームボワ2017

4
また、ヘッダーとテーブルの形式をmysql -u <user> -p -B --disable-column-names -e 'select * from schema.table'
削除

2
@tinybyte Linuxを想定:アスタリスク*は現在のディレクトリ内のすべてのファイルに展開されますが、この展開は一重引用符では行われません。これが理由です。二重引用符は、がないクエリでも機能し*ます。
NobbZ 2018

2
Dr.jacky私は確信している@あなたが本当にこれ以上必要はありませんが、あなたのrootユーザにパスワードがない場合には、将来のために、ちょうどいけない、ブランクとして-pオプションを渡してはいけないすべてのつまりでそれを渡すmysql.exe -u root -e "my query"
solidau

29
mysql -uroot -p -hslavedb.mydomain.com mydb_production -e "select * from users;"

使用法のプリントアウトから:

-e--execute=name
コマンドを実行して終了します。(無効化--forceと履歴ファイル)


15

ここでは、クールなシェルトリックでそれを行う方法を示します。

mysql -uroot -p -hslavedb.mydomain.com mydb_production <<< 'select * from users'

'<<<'は、エコーからのパイプと同様に、それに続くものを標準入力として受け取るようにシェルに指示します。

-tフラグを使用して、テーブル形式の出力を有効にします


13

頻繁に実行するクエリの場合は、ファイルに保存できます。次に、それ実行したいときはいつでも:

mysql < thefile

(もちろん、すべてのログインフラグとデータベースフラグを使用)


6
echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.