DB

各DB上でファイル内に記載したSQL文をコマンドで実行してみた

Oracleの場合、以下の記事の「spoolコマンドによるCSVファイル出力」に記載のsqlplusコマンドを利用することで、SQLファイルに記載したSQL文の実行が行えるが、他のDBにおいても同様の処理を行うことができる。

OracleのspoolコマンドでテーブルのデータをCSVファイルに出力してみた今回は、OracleのテーブルデータをCSVファイルに出力してみたので、共有する。sqlplusで接続し、spoolコマンドを利用すると...

今回は、Oracle, MySQL, PostgreSQL, SQL Serverの各DBにおいて、ファイル内のSQL文をコマンドで実行してみたので、その手順を共有する。

前提条件

下記記事のように、A5M2を利用して各DBに接続できていること。

A5M2を利用して各DBに接続してみたA5M2(A5:SQL Mk-2)は、SQL文の入力支援やER図作成などの機能を備えていて、Oracle、MySQL、PostgreSQ...

やってみたこと

  1. Oracleの場合の実行結果
  2. MySQLの場合の実行結果
  3. PostgreSQLの場合の実行結果
  4. SQL Serverの場合の実行結果

Oracleの場合の実行結果

Oracleの場合の実行結果は以下の通りで、sqlplusコマンドを利用することで、SQLファイルに記載したDML文が実行できることが確認できる。

1) Oracleに、以下のデータが入っている状態とする。
Oracleの場合の実行結果_1

2) コマンドプロンプトを起動し、sqlplusコマンドの配置されているディレクトリに移動する。

Oracleの場合の実行結果_2_1

なお、以下の「sqlplus.exe」が、sqlplusコマンドになる。
Oracleの場合の実行結果_2_2

3) 以下のように、user_dataテーブルを更新するためのSQLファイルを、「C:\tmp\update_memo.sql」に配置する。
Oracleの場合の実行結果_3_1

Oracleの場合の実行結果_3_2

なお、このファイル内のexitコマンドは、sqlplusコマンドでOracleに接続しSQLを実行した後に、自動的にOracleから切断できるようにするために必要となる。

4) sqlplusコマンドを利用して、3)のSQLファイルの内容に従って、データ更新を行う。

Oracleの場合の実行結果_4

なお、sqlplusコマンドは、「sqlplus (ユーザー名)/(パスワード)@(接続文字列) @(実行するSQLファイルパス)」という形式で指定している。

5) Oracleのデータを確認すると、SQLファイルに記載した内容に従ってデータ更新されていることが確認できる。
Oracleの場合の実行結果_5

「Envader」はLinuxコマンドやDatabase SQL等のスキルを、環境構築不要で習得できる学習サイトだった「Envader」は、ITエンジニアとしてよく使うLinuxコマンドやDatabase SQL等のスキルを、解説を読んだ上で、問題を解き...

MySQLの場合の実行結果

MySQLの場合の実行結果は以下の通りで、mysqlコマンドを利用することで、SQLファイルに記載したDML文が実行できることが確認できる。

1) MySQLに、以下のデータが入っている状態とする。
MySQLの場合の実行結果_1

2) コマンドプロンプトを起動し、mysqlコマンドの配置されているディレクトリに移動する。

MySQLの場合の実行結果_2_1

なお、以下の「mysql.exe」が、sqlplusコマンドになる。
MySQLの場合の実行結果_2_2

3) 以下のように、user_dataテーブルを更新するためのSQLファイルを、「C:\tmp\update_memo.sql」に配置する。
MySQLの場合の実行結果_3_1

MySQLの場合の実行結果_3_2

4) mysqlコマンドを利用して、3)のSQLファイルの内容に従って、データ更新を行う。

MySQLの場合の実行結果_4

なお、mysqlコマンドは、「mysql -h (ホスト名) -u (ユーザー名) -p(パスワード) -D (データベース名) (実行するSQLファイルパス)」という形式で指定している。

また、mysqlコマンド実行時に、警告「Warning: Using a password on the command line interface can be insecure.」が表示されるが、これはバージョン5.6以上のMySQL上で、mysqlコマンドをパスワード指定して実行する場合に表示される警告で、データ更新は問題なく行うことができる。

この警告についての説明は、以下のサイトを参照のこと。
https://beyondjapan.com/blog/2016/08/mysql56-warning/

5) MySQLのデータを確認すると、SQLファイルに記載した内容に従ってデータ更新されていることが確認できる。
MySQLの場合の実行結果_5



削除または保存していないWordドキュメントの復元方法【4DDiG Windowsデータ復元】ワード(Word)データ等のファイルを誤って削除してしまった場合は、通常はデータの復元ができませんが、4DDiGというソフトウェアを利用...

PostgreSQLの場合の実行結果

PostgreSQLの場合の実行結果は以下の通りで、psqlコマンドを利用することで、SQLファイルに記載したDML文が実行できることが確認できる。

1) PostgreSQLに、以下のデータが入っている状態とする。
PostgreSQLの場合の実行結果_1

2) コマンドプロンプトを起動し、psqlコマンドの配置されているディレクトリに移動する。

PostgreSQLの場合の実行結果_2_1

なお、以下の「psql.exe」が、psqlコマンドになる。
PostgreSQLの場合の実行結果_2_2

3) 以下のように、user_dataテーブルを更新するためのSQLファイルを、「C:\tmp\update_memo.sql」に配置する。
PostgreSQLの場合の実行結果_3_1

PostgreSQLの場合の実行結果_3_2

4) psqlコマンドを利用して、3)のSQLファイルの内容に従って、データ更新を行う。

PostgreSQLの場合の実行結果_4

なお、psqlコマンドは、「psql -h (ホスト名) -U (ユーザー名) -d (データベース名) -f (実行するSQLファイルパス)」という形式で指定している。また、「SET PGPASSWORD=(パスワード)」という記載で、psqlコマンドで接続する際のパスワードを設定している。

5) PostgreSQLのデータを確認すると、SQLファイルに記載した内容に従ってデータ更新されていることが確認できる。
PostgreSQLの場合の実行結果_5

フリエン(furien)は多くの案件を保有しフリーランス向けサービスも充実しているエージェントだったフリエン(furien)は、ITフリーランス(個人事業主)エンジニア専門のエージェントであるアン・コンサルティング株式会社が運営する業界...

SQL Serverの場合の実行結果

SQL Serverの場合の実行結果は以下の通りで、sqlcmdコマンドを利用することで、SQLファイルに記載したDML文が実行できることが確認できる。

1) SQL Serverに、以下のデータが入っている状態とする。
SQLServerの場合の実行結果_1

2) コマンドプロンプトを起動し、sqlcmdコマンドの配置されているディレクトリに移動する。

SQLServerの場合の実行結果_2_1

なお、以下の「SQLCMD.exe」が、sqlcmdコマンドになる。
SQLServerの場合の実行結果_2_2

3) 以下のように、user_dataテーブルを更新するためのSQLファイルを、「C:\tmp\update_memo.sql」に配置する。
SQLServerの場合の実行結果_3_1

SQLServerの場合の実行結果_3_2

4) sqlcmdコマンドを利用して、3)のSQLファイルの内容に従って、データ更新を行う。

SQLServerの場合の実行結果_4

なお、sqlcmdコマンドは、「sqlcmd -S (ホスト名) -U (ユーザー名) -P (パスワード) -d (データベース名) -i (実行するSQLファイルパス)」という形式で指定している。

5) SQL Serverのデータを確認すると、SQLファイルに記載した内容に従ってデータ更新されていることが確認できる。
SQLServerの場合の実行結果_5

要点まとめ

  • Oracle, MySQL, PostgreSQL, SQL Serverの各DBにおいて、ファイル内のSQL文をコマンドで実行することができる。その際に利用するコマンドは、Oracleの場合はsqlplus、MySQLの場合はmysql、PostgreSQLの場合はpsql、SQL Serverの場合はsqlcmdとなる。