【bat】バッチファイルを使ってデータベースにSQLを実行する方法

バッチファイルを利用することで、データベースに対して簡単にSQLを実行することができます。この記事では、MySQLとPostgreSQLを例に、それぞれのデータベースシステムでのSQL実行方法を紹介します。

MySQLでの実行方法

MySQLがインストールされている場合、バッチファイル内で以下のようにコマンドを記述します。

mysql -uユーザ名 -pパスワード -hホスト名 データベース名 < ファイル名.sql

このコマンドは、指定したユーザ名、パスワード、ホスト名でMySQLに接続し、指定したSQLファイル(ファイル名.sql)を実行します。

バッチファイルに直接SQLを記述し、MySQLコマンドラインツールを使用して実行することもできます。

mysql -uユーザ名 -pパスワード -hホスト名 -e "SQLクエリ"

ここで、「SQLクエリ」には実行したいSQLステートメントを記述します。

PostgreSQLでの実行方法

PostgreSQLを使用している場合、バッチファイル内で以下のように記述します。

psql -U ユーザ名 -d データベース名 -h ホスト名 -f ファイル名.sql

これにより、指定したユーザ名、データベース名、ホスト名でPostgreSQLに接続し、指定したSQLファイル(ファイル名.sql)を実行します。

バッチファイルに直接SQLを記述し、psqlコマンドを使用して実行することも可能です。

psql -U ユーザ名 -d データベース名 -h ホスト名 -c "SQLクエリ"

ここで、「SQLクエリ」には実行したいSQLステートメントを記述します。

MySQLのサンプルバッチファイル

SQLファイルを使用する場合

@echo off
echo Executing SQL script on MySQL...

set MYSQL_USER=root
set MYSQL_PASSWORD=your_password
set MYSQL_HOST=localhost
set DATABASE_NAME=your_database
set SQL_FILE=script.sql

mysql -u %MYSQL_USER% -p%MYSQL_PASSWORD% -h %MYSQL_HOST% %DATABASE_NAME% < %SQL_FILE%

echo SQL script executed successfully!
pause
  • MYSQL_USER: MySQLのユーザ名
  • MYSQL_PASSWORD: MySQLのパスワード
  • MYSQL_HOST: MySQLのホスト名
  • DATABASE_NAME: 使用するデータベース名
  • SQL_FILE: 実行したいSQLスクリプトのファイル名

直接クエリを実行する場合

@echo off
echo Executing SQL query on MySQL...

set MYSQL_USER=root
set MYSQL_PASSWORD=your_password
set MYSQL_HOST=localhost
set SQL_QUERY="SELECT * FROM your_table;"

mysql -u %MYSQL_USER% -p%MYSQL_PASSWORD% -h %MYSQL_HOST% -e %SQL_QUERY%

echo SQL query executed successfully!
pause

PostgreSQLのサンプルバッチファイル

SQLファイルを使用する場合

@echo off
echo Executing SQL script on PostgreSQL...

set PG_USER=postgres
set PG_PASSWORD=your_password
set PG_HOST=localhost
set DATABASE_NAME=your_database
set SQL_FILE=script.sql

psql -U %PG_USER% -d %DATABASE_NAME% -h %PG_HOST% -f %SQL_FILE%

echo SQL script executed successfully!
pause
  • PG_USER: PostgreSQLのユーザ名
  • PG_PASSWORD: PostgreSQLのパスワード
  • PG_HOST: PostgreSQLのホスト名
  • DATABASE_NAME: 使用するデータベース名
  • SQL_FILE: 実行したいSQLスクリプトのファイル名

直接クエリを実行する場合

@echo off
echo Executing SQL query on PostgreSQL...

set PG_USER=postgres
set PG_PASSWORD=your_password
set PG_HOST=localhost
set SQL_QUERY="SELECT * FROM your_table;"

psql -U %PG_USER% -d %DATABASE_NAME% -h %PG_HOST% -c %SQL_QUERY%

echo SQL query executed successfully!
pause
  • SQL_QUERY: 実行したいSQLクエリ

まとめ

データベースに対してバッチファイルを使用してSQLを実行する方法について、MySQLとPostgreSQLの両方で具体的な手順を解説しました。セキュリティを考慮した正しい方法で操作を行い、効率的にデータベース管理を行うことができます。