Open1
SQL memo
作ったもの
作った経緯
- 毎日保管している操業データの自動保存機能
- UWSCで取得していたけれど、下記の点に難あり
- 取得に時間がかかり、その間PC操作不可
- 正確性も低く偶にポップアップが出ると挙動がおかしくなる
- SQL打てることが判明したので、勉強ついでに高速化、正確性向上を目指した
作ったもの
- 24時間のレコード数をカウント
- 0件ならば1日遡るのを2週間を上限に実行
- 1件以上となった場合、各操業データを取得するSQLを実行しcsvを出力
- 出力したcsvを、集計フォルダに移動する
チラシの裏
チラシの裏
Bat
Batはマナー講師レベルで文法にうるさいくせに、どこが悪いのか教えてくれない!!
SQLの勉強のつもりだったのに、Batで一番時間を裂いていた気がする…。
- For文の内と外で変数使い回すには呪文が必要
- IF文の変数記号が変化する
- スペース1つ間違うと動かなくなる
- 変数の返り値が数字のみ
- 返り値の変数は%errorlevel%固定
- 変数が文字列か数値か良くわからん
- 日付計算が単独だと困難
チョット触れただけなのにこんだけ不満が出るし、Batはもう触りたくない😭
SQL
SELECTしか使わない以上、文法は単純なので助かる
A5:SQL Mk-2があったおかげで物凄く効率良くできた
25年以上開発されているツールは流石の一言
もっといろんなことできそうなので、色々いじってみよう
Oracle
instant-clientの時点で敷居の高さを感じたが、ググれば情報いっぱい出るので助かった
sqlPlusはbatで簡潔させる上で特にありがたかった
うちのサーバーは11gだけど、ガッツリ使ってないので現行バージョンで特に問題なさそうだなぁ
参考にした ページ一覧
SQL文
Joinの使い方
数え方 csv出力 csvフォーマット変更 日付のフォーマット変更 超便利なクライアント 事故防止の読み取り専用版があって助かったBat
自動化させたいのでBat関連
batからの実行、引数
SQL結果を返り値としてBatに渡す
日付の計算
for文
for文処理中のECHO は <OFF>対策(遅延環境変数)
Oracle
インストーラーの設定方法
インストーラー- 環境変数でパスを通すのが肝要
- ODBC接続でExcelVBA使用する場合、ExcelのBitに合わせたクライアントをインストールすること
違うBitだと以下のエラーが出て使用不可
指定された DSN には、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています - 通常Excelは32Bit版使用するので、インストールするのは32Bit版で良さそう
- WindownsのODBC設定も64Bit版と32Bit版があるので、ExcelのBitと合わせたものを使用する
- WIN7は18Cを使用すること
ODBC
設定方法
VBA
VBAでODBC接続
Microsoft ActiveX Data Objects X.X Libraryは2.8を使用
error while trying to retrieve text for error ora-01019
翌日実行すると上記のエラーで何故か動かなくなった…
原因不明なのでVBAでの読み込みは諦め
PowerQuery
今まで使ったことがなかった機能を使ってみた
ODBCで接続してSQLで取得
更新はVBAからRefreshするだけで読めるしすげえええ!!!
Excel使えこなせてないなぁと色々実感…