MySQLをバッチモードで使う方法|スクリプト実行の基本と活用テクニック
MySQLをバッチモードで実行する方法
MySQLはバッチモードで実行できます。バッチモードとは、実行したいSQLステートメントをあらかじめファイルに保存しておき、mysqlコマンドにそのファイルから入力を読み込ませる方式です。基本的な使い方は以下の通りです。
shell> mysql < batch-file
Windows環境での注意点
Windows上でmysqlを実行している場合、ファイル内に特殊文字が含まれていると問題が発生することがあります。そのようなときは、次のコマンドを使用しましょう。
C:\> mysql -e "source batch-file"
接続パラメータの指定方法
ホスト名やユーザー名などの接続パラメータをコマンドラインで指定する必要がある場合は、以下のように実行します。
shell> mysql -h host -u user -p < batch-file Enter password: ********
バッチモード(スクリプト)を使うメリット
この形式でmysqlを実行すると、スクリプトファイルが作成され、それがそのまま実行されます。なぜスクリプトを使うべきなのか、その理由を理解しておくことが重要です。
再入力の手間を削減: 同じクエリを頻繁に実行する場合でも、スクリプトを作成しておけば、実行のたびにコードを打ち直す必要がありません。
エラーが発生しても処理を継続: 一部のステートメントでエラーが起きてもスクリプトの実行を続けたい場合は、「--force」コマンドラインオプションを指定します。
既存クエリの流用が簡単: 類似した新しいクエリが必要になった際も、既存のスクリプトファイルをコピーして編集するだけで簡単に作成できます。
クエリ開発の効率化: バッチモードはクエリの開発中に特に便利です。複数行にわたるステートメントや、複数ステートメントの連続実行でも威力を発揮します。ミスが発生しても、すべてを打ち直す必要はなく、該当箇所を修正してmysqlにスクリプトの再実行を指示するだけです。
出力結果を活用するテクニック
クエリが大量の出力を返す場合は、結果が画面上部へスクロールして見えなくなるのを防ぐため、ページャー経由で表示するとよいでしょう。以下のコマンドで実現できます。
shell> mysql < batch-file | more
また、出力をファイルに保存して、後から加工や解析を行うことも可能です。
shell> mysql < batch-file > mysql.out
さらに、スクリプトファイルは他のユーザーと共有・配布することもできるため、チームメンバーが同じステートメントを実行したい場合にも役立ちます。
-
JDBCを使ってMySQLデータベースにファイルを保存・挿入する方法
一般的に、ファイルの内容はMySQLデータベースでは Clob 型(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)のカラムに保存されます。 JDBCはClob型をサポートしており、これを利用することでファイルの内容をデータベースのテーブルに格納できます。 PreparedStatement インターフェースが提供する setCharacterStream() メソッドは、パラメータのインデックス(位置)を表す整数と、Readerオブジェクトを引数として受け取ります。 このメソッドを使うと、指定したインデックスのプレースホルダ(?)に対して、Readerオブジェクト(ファイ
-
Pythonでファイルのパーミッション(アクセス権)を変更する方法
Pythonでファイルのパーミッション(アクセス権)を変更するには、標準ライブラリの os.chmod(ファイル名, モード) を使用します。モードは8進数で指定する必要があるため、数値の先頭に必ず 0o を付けて記述してください。os.chmod()を使った基本的な変更方法例えば、すべてのユーザーに対して読み込み・書き込み・実行の全権限を与えたい場合は、パーミッションを 0o777 に設定します。以下のように記述します。>>> import os>>> os.chmod(my_file, 0o777)statモジュールのフラグを使う方法また、stat モジ