2012-02-27 6 views
16

bashを使用してmysqlクエリを1行で実行する必要があります。シェル - 1行のクエリ

それはこのようなものでなければなりません:

mysql database --user='root' --password='my-password' < query.file 

しかし、その代わりに、それはこのような生のクエリを使用したいと思い< query.fileの:

mysql database --user='root' --password='my-password' < UPDATE `database` SET `field1` = '1' WHERE `id` = 1111; 

が可能ということですか?

+1

いいえ、 '<' bashで入力されたファイルを示すために使用します –

+0

私はそのユーザ名とパスワードを '.my.cnf'ファイルまたはカスタムファイルの中で' --defaults-file =/path/to/file.cnf'クリーナー、再利用可能など – Wrikken

答えて

32

あなたは

mysql -u root -pmy_password -D DATABASENAME -e "UPDATE `database` SET `field1` = '1' WHERE `id` = 1111;" > output.txt 

を試してみました(> output.txt部分は無視することができますが、見ることによって実行されたステートメントによって返されたものを見るために有用であろう)

7

-eオプションを使用します。

$ mysql -e "UPDATE ..." 
+0

これは次のようになりますか? 'mysql -e" MY_QUERY "--user = root --password = database-password'? – Cyclone

4

echoとパイプ:

を使用してください。
echo "UPDATE `database` SET `field1` = '1' WHERE `id` = 1111;" | mysql database --user='root' --password='my-password' 
+0

+1、yes、または 'mysql -e ...' – Koerr

0

パスワードをコマンドに書き込むことは一般的には好ましくありません(人々はあなたの肩の上でそれを読むことができますが、おそらくあなたのシェル履歴などに保存されます)が、あなたの証明書をファイルに入れることができます。ファイルに.で始まる名前を付けると、隠されてしまいます。これもより安全です。

# .db.conf 
[client] 
database=myDatabase 
user=myUserName 
password=myPassWord 

のみファイルを読み取ることができていることを確認してください:

chmod 600 .db.conf 

そして、そのようにMySQLを呼び出す:

mysql --defaults-extra-file=.db.conf -e "UPDATE database SET field1 = '1' WHERE id = 1111;" 

か:

echo "UPDATE database SET field1 = '1' WHERE id = 1111;" | mysql --defaults-extra-file=.db.conf 

ノートに--defaults-extra-file必要があること最初の選択肢になるmysqlに供給されます。それ以外の場合はフリークアウトします。

0

私は通常、その構文とアプローチがファイルのリダイレクトに似ているので、トリプルレスを優先します。バック歴史の中で行くと、クエリ

mysql database --user='root' --password='my-password' <<< "UPDATE `database` SET `field1` = '1' WHERE `id` = 1111" 

を変更するのは簡単それはここでは文字列のbashで呼ばれています。それらについての詳細はこちらhttp://linux.die.net/abs-guide/x15683.html

これは、文字列をコマンドにパイプしたいときに便利です。

0

これを実稼働環境で実行している場合は、mysqlシェルに最初にログインして、データベースの詳細を公開しない方がよいでしょう。

シェルにログインしたら、prepared.sqlファイルを使用するだけではどうですか?

のmysql -uユーザー-p

次に、

今、あなたがシェルにログインしていて、ここからしっかりコマンドを実行することができ、ユーザーのパスワードを入力します。

MySQLの>を使用しますDBNAME mysql> SOURCE file.sql

これは、私のデータベースでコマンドラインで操作する方法ですasswordsはログに表示されません。

関連する問題