質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

4755閲覧

シェルスクリプトで外部ファイルのSQLのログ出力ができない

koichi8888

総合スコア24

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2019/08/05 07:28

編集2019/08/05 07:31

前提・実現したいこと

MySQLの操作をシェルスクリプトで実行する際にSQLファイルを外部ファイルとして作成し、読み込むことで実行させています。

実行したクエリログのログを出力させたいのですが、show tableやselect count(*) <tablename>のような表形式でログ出力されるクエリはログ出力されるのですが、INSERTやLOAD DATA LOCAL INFILEのような件数がログ出力されるクエリのログが出力されません。

外部ファイルではなく、シェルスクリプトに直接クエリを書けば、リダイレクトさせることでログ出力はできると思うのですが、クエリが長いため、可能であれば、可読性を高めるため、外部ファイルにクエリを書く形式にしたいと思っております。

上記の仕様でログ出力可能な方法をご存知でしたら、教えていただけますでしょうか。

該当のソースコード

mysql -t -u${DBUSER} -h${DBHOST} -p${DBPASS} ${DBNAME} --local_infile=1 < <SQLファイル> >><ログファイル>

試したこと

show tableやselect count(*)でログ出力されることは確認済みのため、特定のコマンドを利用したクエリのログ出力ができない状態です。

補足情報(FW/ツールのバージョンなど)

Amazon RDS for MySQL

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

-t オプションはどうでしょうか。

投稿2019/08/05 08:01

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koichi8888

2019/08/05 08:04

-t オプションは付けていて、show tableでテーブル形式で表示されることは確認しているのですが、テーブル形式ではないクエリのログ取得を実現したいと思っています。
sazi

2019/08/05 08:24 編集

SHOW WARNINGSでは? --show-warnings
guest

0

INSERTやLOAD DATA LOCAL INFILE

データ挿入や更新のSQLは出力がないのでログには表示されないのでは?
処理後情報関数を発行してログを出力するとかでしょうか?

  • ROW_COUNT()
  • LAST_INSERT_ID()

投稿2019/08/05 07:42

yambejp

総合スコア114767

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koichi8888

2019/08/05 08:02

ご回答ありがとうございます。挿入したデータ件数は出力できましたが、MySQLコンソールで出力される下記のログような情報、特に重複データ件数(skipped)が欲しいのですが、取得は難しいのでしょうか。 LOAD DATA LOCAL INFILE XXXX Query OK, 560 rows affected, 1129 warnings (0.02 sec) Records: 563 Deleted: 0 Skipped: 3 Warnings: 1129 INSERT INTO XXXX Records: 560 Duplicates: 0 Warnings: 0
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問