少しマニアックな自分用メモ。
定常的にデータベースを扱っているとバッチ処理で自動化をすることが多くなりますが、コマンドライン上でSQLコマンドを実行するにはいろいろ作法があります。
例えば、SQLServerでデータのインポート・エクスポートするにはWinではbcpを、MacではFreeTDSというツールを使います。
MacからSQLServerをさわれるFreeTDS - ログマニアックス
最近teradataを使うことが多いのですが、Teradata向けのコマンドライン操作ツール「bteq」のメモ
BTEQとは
こちらで紹介されていますが、
汎用コマンド・ベースのクエリー/レポーティング・ツールです。BTEQ の提供するインタラクティブまたはバッチ・インタフェースを介して、複数の Teradataデータベースに対してデータのインポートやエクスポート、クエリー文の実行、レポートの作成などができます。
というツールです。Basic Teradata Queryというのが正式名称。ちなみに発音は「ビーティーク」。
自動ログインしてSQLを引く
まぁ以下のページでだいたい説明されていますが、
- .LOGONでログイン
- .QUIET ON で表示内容をクエリー結果だけに
- .REPEAT*で表示行数を無制限に
- あとはSQLを生で書くだけ
- .EXPORTでテーブルデータをエキスポート
- .QUITで終了
- .LOGOFFでログオフ
バッチファイルにして書く出すところは
こちらの記事を参考に。
shellの標準出力だとうまくいかないので、bteqでのコマンド実行のみをこちらで実施して、実際にはテンポラリーデータをテーブルに書き込んで.EXPORTでテキストファイル書き出しをおこなうのが良さそうです。
定型化すればモニタリングも便利かも
あんまり属人的なモニタリングツールは開発したくない部分はあるのですが、常々思っているのが、データ活用や分析を語るのであれば、せめてプロトタイプはエクセルでもなんでも開発したいというのがこだわり。
開発メンバーに通じればいいという部分もあるし、実際にうまくいくことを自分の手で説明できないと恐ろしくて…
今までmysql / SQL Server / Oracleなどいろいろなタイミングで楽する程度にいじっていましたが、teradataも下手の横好きに加わりそうです。