2016-06-27 22 views
0

名前1をデータベース名として使用して、そのデータベースにデータを入力するmysqlスクリプトがあります。しかし、私はデータベースの名前をいつでもという名前1のSQLスクリプトに指定するのではなく、その名前を選択できるようにしたいと考えています。シェルスクリプトからmysqlスクリプトに変数を渡す方法

私はすでに自分のデータファイルのパスを取り込むラッパーシェルスクリプトを持っていますが、今はデータベースの名前を取りたいと思います。私のシェルスクリプトで

、私は割り当てる:

DATABASE_NAME=$2 

私は$ DATABASE_NAMEを使用することができ、私のMySQLスクリプトの上部にどのような方法がありますか?だから、mysqlのスクリプトで、それは次のようになります。代わりに私が今持っているものの

USE DATABASE_NAME; 

USE name1; 
+0

スクリプト中に一度にいくつのデータベースを使用していますか? 1の場合、スクリプトを一度クリーンアップします。 – Drew

+0

私はname1というデータベースを1つだけ使用しています。しかし、私はそれを参照するほぼ10のmysqlスクリプトを持っています。また、「一度スクリプトをクリーンアップする」とはどういう意味ですか? – Jain

+0

私はちょうど 'mydb.table1 ...'から 'mydb.'で全部を選択している人のポイントを表示しません – Drew

答えて

1

あなたはあなたのコードを実行するmysql -eを使用することができます。

mysql -e "USE ${DATABASENAME}; Some sql" 

その方法は、すべての交換作業。

オプションで、そのファイルを解析するときに${DATABASENAME}を置換するだけの、一時的なsqlファイルまたはパイプラインコードをmysqlに書き込むことができます。 (-eオプションが最も透過的で最も簡単です)

+0

これを行うと、mysql -e USE $ {DATABASENAME}; DataLoad.sql "のようなものがあるかもしれません。 DataLoad.sqlファイルで、同じデータベース名を参照するにはどうすればよいですか? (name1をDATABASENAMEに置き換えたいSELECT COUNT(*)FROM name1.Load'のようなもの) – Jain

+0

@Jain 'USE'コマンドはデフォルトのデータベースを設定します。そのため、データベース名はSQLから除外してください。 'SELECT COUNT(*)FROM LOAD'。 – Barmar

+1

'source filename.sql'を使って、ファイルからSQLをロードすることができます。 – Barmar

関連する問題