コマンドプロンプトで複数のテーブルのデータ件数を取得し、結果を変数に代入する方法を教えてください。

このQ&Aのポイント
  • コマンドプロンプトで複数のテーブルのデータ件数を取得し、結果を変数に代入する方法について教えてください。
  • 複数のテーブルのデータ件数を取得して変数に代入し、結果を出力する方法をコマンドプロンプトで実現したいです。
  • コマンドプロンプトで複数のテーブルのデータ件数を取得して変数に代入し、結果を一括で出力する方法を教えてください。
回答を見る
  • ベストアンサー

コマンドプロンプト 複数の実行結果を変数に

複数のテーブルのデータ件数を取得して変数に入れ、result.txtに結果を出力したいのですが、下のように書くと、1つのテーブルのデータ件数しか出力されません。複数の結果を出力するにはどうしたらよいか教えてください。 for /f %%z in ('mysql -u root -p ^< "c:\bat\test.sql"') do set count=%%z echo result: %count% >> "c:\bat\result.txt" test.sqlの中身を、 select count(*) from table1; select count(*) from table2; select count(*) from table3; とすると何も出力されず、 select count(*) from table1; とすると、1つの結果だけ出力されます。

  • MySQL
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

コマンドプロンプトでループさせる意味がよくわからないですが select concat('result: ',count(*)) as result from table1 union all select concat('result: ',count(*)) from table2 union all select concat('result: ',count(*)) from table3; みたいなSQLじゃだめなんですか?

tohiyu
質問者

お礼

union でつなげて読み込んだら、 ご指摘どおり、ループさせずに結果を得られました。 ありがとうございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

そもそも count に意味はあるの?

tohiyu
質問者

補足

echo table1: %count% >> "c:\bat\result.txt" echo table2: %count% >> "c:\bat\result.txt" echo table3: %count% >> "c:\bat\result.txt" という感じで、出力したいと思っています。 count は、変数名に使用しただけです。

関連するQ&A

  • コマンドプロンプト 実行結果の桁をそろえたい

    バッチの実行結果の件数%count%を、5桁の右寄せ(結果が1桁のばあいは、スペース4桁を頭に入れてる)でテキストファイルresult.txt に出力したいのですが、下記のように書くと、 table1 : ("d\n",0) 件  と出力されてしまいます。 table1 :    0 件   と出力されるようにするにはどうしたらよいのでしょうか? for /f %%i in ('mysql -u root -p ^< "c:\bat\test.sql"') do set count=("%5d\n",%%i) echo table1 : %count% 件 >> "c:\bat\result.txt"

    • ベストアンサー
    • MySQL
  • count(*)のcountをとりたい

    現在、以下のようなテーブルを扱っているのですが、 +---------+ |accountid| +---------+ |   999| |   999| |   638| |   638| |   638| |   999| |   999| |   638| +---------+ を、ユニークな件数でとろうとしています。 現在は > select count(*) from TABLE group by accountid; +----------+ | count(*)| +----------+ |     4| |     4| +----------+ 2 rows in set (0.00 sec) などとして、「2 rows in set」を読むと言う方法なのですが、それだと人の手を介さないといけないのでどうにか出力結果をダイレクトに取得したいのです。 SQLサーバで使えるらしい select count(*) from (select count(*) from TABLE group by accountid) as AA; と言うSQL文を使っても無理だったので、どなたか方法をご存じないでしょうか???

    • ベストアンサー
    • MySQL
  • 2つのテーブルのカウント結果を1行で取得

    以下のようなデータ件数のテーブルが、別々のDBにあります。 SELECT COUNT(*) FROM AA.TBL01 ------ TBL01 ------ 10 SELECT COUNT(*) FROM BB.TBL02 ------ TBL02 ------ 5 それぞれのテーブルのカウント結果を、1行で取得する ことは可能でしょうか? <取得したい結果> ---------------- TBL01 TBL02 ---------------- 10 5 よろしくお願いします。 (SQL Server2005 Standard)

  • SELECT DISTINCTの結果件数をCOUNTする方法

    SQL SERVER 2005 EXPRESS のストアドプロシージャで、 SELECT結果の件数を、変数 @count に取得したいのですが DISTINCTの引数が複数あるのが原因なのか、上手くいきません。 目的はテーブル「TBL」から、COMとUSERの組み合わせの リストを抽出し、その件数を取得する事です。 テーブル名:TBL COM  USER --------------- 001  A 002  A 003  A 001  B 002  A 003  C 「COMとUSERの組み合わせで、重複するものは取らない」のならば  SELECT DISTINCT COM,USER  FROM TBL で、下記のような結果が得られます。 COM  USER --------------- 001  A 002  A 003  A 001  B 003  C で、この結果件数である「5」を取りたいのですが DECLARE @count int  SELECT @count = COUNT(DISTINCT COM,USER)  FROM TBL print @count と打っても失敗します。 ( )の括りやCOUNTの位置をいろいろと試したが出来ませんでした。 COUNT DISTINCT(複数項目)が出来ないのならば、 どうすればこの結果の件数を取得できるでしょうか? どうかご教授授くださいませ。よろしくお願いします。

  • 抽出結果を1件ずつ次の抽出条件に使う方法

    Oracleで下記のようなデータ処理を実現する方法を調べています。 (1)特定の条件でデータを抽出する。  select X from TABLE1 where Y="test" (2)(1)で抽出したデータを別の抽出条件の値として1つずつ使用し、  別のsqlにてデータを抽出し、件数を取得する。 select count(*) from TABLE2 where Z = aaa  ※aaaには(1)の結果を順に入れる。 2,3件であれば手作業で(2)を実施すればよいのですが、(1)の結果が数100件 になっているため、(2)をループ処理させたいです。 PL/SQLが必要なのでは?と思いつつ、使ったことがありません。 少し調べてはみましたが、よくわからず、困っています。 特に難しい処理ではないと思ってはいるのですが、期日まで時間がなく、質問 させていただきました。 一時的なデータ確認のためだけなので、専用にプログラムを組むのはしたく 無いと思っています。 参考になる情報をいただければ幸いです。 もちろん、(2)のサンプルコードなどいただければ大変助かります。 どうぞよろしくお願いします。

  • プレインPHPでのSQL検索結果取得

    初心者の質問ですみません。 フレームワークをずうっと使って来たのですが、フレームワークを使わずに検索をしようとしたところ、全く思うようにいかず困っています。 SELECT * FROM table のような単純なSQL文なのですが、PEARを使って $sql = "SELECT * FROM table"; $result = $conn->query($sql); としvar_dumpしてみると、期待していたSQLのデータが表示されません。 フレームワークを使っていると、この時点でどのフレームワークでもきれいに連想配列で表示できていました。 その辺が、フレームワークのフレームワークたるゆえんなのでしょうか..... ただ、結果は取得できているようで、 $count = $result->numRows(); としてやると正しい件数が表示されますし、カラム名を指定して while($rs = $result->fetchRow(DB_FETCHMODE_ASSOC)){ echo $rs['column_name']; } としてやるとカラムの値を表示します。 やりたいこととしては、検索結果を連想配列で取得し、foreachで行ごとに処理を行うことで、whileで$rs['column_name']を取得できることから、最悪でも力技で行ごとにカラム情報を全て取得して配列を作ってやることはできるとは思うのですが、もっと良い方法が無いはずがないと思います。 教えていただけますでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 複数のテーブルの レコード件数所得

    sql初心者です。 php sql4.1を使って テーブルA・テーブルBの総レコード件数を所得がうまくできません。 テーブルAの◇◇が○○の含むレコード件数を所得は SELECT count(*) FROM テーブルA WHERE ◇◇ LIKE ○○ でできました。 テーブルA・テーブルBの◇◇が○○の含むレコード件数を所得はどうすればいいのでしょうか? よろしくお願いいたします.

    • ベストアンサー
    • MySQL
  • 検索結果をファイルに出力するコマンド

    SQL Server2000を使用しています。 検索結果をウィザードを使わずにファイルに書き出すにはどうしたらよいでしょうか。 My SQLだと select * from table1 into outfile 'file1.txt' のようになると思いますがSQL Serverだとどうなるでしょうか。 持っている本によるとウィザードを使用する となっていて コマンドの記載がありません。 よろしくお願いします。

  • [SQL Server] コマンドプロンプトからのCSV形式出力

    SQL ServerのテーブルデータをSELECTしてダブルコーテ区切りのCSVに出力したいと考えております。 ・batファイルからの起動を希望。 ・出力CSVファイル名はbatファイルより引数で指定したい。 ・出力後、DELETEも行いたい。 OracleだとSQL*Plus環境で下記のようにテキストレベルで簡単にできます。 SQL Serverでも同様のことができないでしょうか? 要は下記をSQL Server版でやりたいということです。 参考:Oracleだと・・・ 同一dirに、abc.batとabc.sqlを用意しabc.batを実行すると20070601.csvが生成される。 1.abc.bat rem ----abc.bat-ここから---- sqlplus usr/pwd@host @abc.sql 20070601.csv rem ----abc.bat-ここまで---- 2.abc.sql ----ファイル名=abc.sql-ここから--- set echo off set heading off SET VERIFY OFF set FEEDBACK OFF set TRIMSPOOL on set termout off set pagesize 0 set linesize 32767 spool &1 select '"'|| カラム1 ||'",'|| '"'|| カラム2 ||'",'|| '"'|| カラム3 ||'"' from テーブル1; spool off delete from テーブル1; exit ----ファイル名=abc.sql-ここまで--- 20070601.csv結果 -ファイル名=20070601.csv-ここから--- "20060726","scott","356160" "20060727","tiger","463391" "20060728","manager","1930" -ファイル名=20070601.csv-ここまで--- DBサーバ環境 OS:Win2003SvrR2 SQL Serverバージョン:わかりません。(2003にのってるので最近のだと思われます) Oracle経験者でSQLServer初心者です。マニュアルもなく、Web検索しても「SQL」「Server」ってなかなかうまくひっかからない!! ので質問あげさせていただきます。

  • psql select結果を環境変数に格納できる?

    お世話になります。 バッチファイル中でpsql.exeを実行させて、 select結果を環境変数に格納したいと考えております。 "C:\Program Files\PostgreSQL\8.2\bin\psql.exe" DB名 -c "select count(*) from table" という単純なselect文を実行し、select count(*)した結果を バッチファイル中で使用したいのです。 -o "C:\hoge.txt" などと付けて、このhoge.txtを改めて読み込んでも良いのですが、 それ以外に方法はありますでしょうか? DB:PostgreSQL 8.2.4 OS:WindowsXP です。