web-dev-qa-db-ja.com

bashに1行でmysqlデータベースを作成する

Bashで1行のコマンドで空のデータベースを作成することは可能ですか?

私の初心者の試みは失敗しました:

mysql -uroot $(create database mydatabase;)

私はしなければならないことになります

  • mysql -uroot
  • create database mydatabase;
  • exit;
24
chrisjlee

@Nitrodistの答えは機能しますが、問題が過剰に設計されています。 MySQLのコマンドラインクライアントは、次のように非常に便利な-eスイッチをサポートしています。

mysql -uroot -e "create database 'foo'"

もちろん、有効なSQLをそこに置き換えることができます。

32
Kromey

MySQLのドキュメントによると、mysqlstdinからコマンドを取得できます

Shell> mysql -uroot < script.sql > output.tab

Process Substitution を使用してこれを達成できます:

Shell> mysql -uroot <(echo "create database mydatabase;") 

または、通常はstdinmysqlにパイプするだけです。

Shell> echo "create database mydatabase;" | mysql -uroot

これを個人的にテストすることはできませんが、これはうまくいくと思います。

編集:別のオプションは-eオプションを指定 here のように:

Shell> mysql -uroot -e "create database mydatabase;"
14
Nitrodist