言葉にできるは武器なるらしい

言葉に文字に残していきます何事も。いつかきっと誰かの役に立つはずだから。

適当で簡単なバッチファイルを作りたい

なんか適当で簡単なバッチファイルを作りたい時ってあるからメモメモ。

 

@echo off

@rem ----------------------------------

@rem --ここにこのバッチの説明、作成日、作成者など

@rem --

@rem --

@rem --

@rem --

@rem --

@rem --

@rem -----各種設定-----

set FNAME=%date:/=%

set JOBNAME=

set HOMEPATH=C:\tmp

set LOGPATH=%HOMEPATH%\Logset LOGNAME=%LOGPATH%\%JOBNAME%_%FNAME%.log

 

@rem --処理開始

echo %date:~0,10% %time:~0,8% 処理1 開始

echo %date:~0,10% %time:~0,8% 処理1 開始 >%LOGNAME%

@rem --bcpコマンド実行

bcp テーブル名 out "ファイル名" -n -U ユーザ名 -P パスワード -S DB名 

@rem --SPを呼ぶ

osql -S サーバ名 -U ユーザ名 -P パスワード -Q "EXEC [SP名]"

if %ERRORLEVEL% NEQ 0 (

    echo %date:~0,10% %time:~0,8% 処理1 でエラーが発生しました。

    echo %date:~0,10% %time:~0,8% 処理1 でエラーが発生しました。 >>%LOGNAME% 

    exit /b %ERRORLEVEL%

)
    echo %date:~0,10% %time:~0,8% 処理1 正常終了

    echo %date:~0,10% %time:~0,8% 処理1 正常終了 >>%LOGNAME% 

exit

【SQLSERVER】「AAA」というカラム名を持つテーブルを検索したい

SQLSERVER】「AAA」というカラム名を持つテーブルを検索したい

そんな時はこれ。

USE DBname

SELECT
d.name as tablename ,
a.colorder as columnNo,
a.name as columnName,
(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) as mark,
(case when (SELECT count(*) FROM sysobjects
WHERE (name in
(SELECT name FROM sysindexes
WHERE (id = a.id) AND (indid in
(SELECT indid FROM sysindexkeys
WHERE (id = a.id) AND (colid in
(SELECT colid FROM syscolumns
WHERE (id = a.id) AND (name = a.name))
)))))
AND (xtype = 'PK'))>0 then '√' else '' end) as KeyName,
b.name as typename,
a.length as bytelength,
COLUMNPROPERTY(a.id,a.name,'PRECISION') as len_length,
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as dimit,
(case when a.isnullable=1 then '√'else '' end) as ifcannull,
isnull(e.text,'') as defaultResult--,
FROM syscolumns a left join systypes b
on a.xtype=b.xusertype
inner join sysobjects d
on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e
on a.cdefault=e.id
where a.name like '%AAA%' --検索したい文字列
order by a.id,a.colorder

 


ちなみに
「指定したカラム名を持つテーブルを検索する」
というもっと簡単っぽいやりかたも検索したら出てきた。
http://sql55.com/query/search-tables-by-column-name.php

 

【SQL】テーブルバックアップ取ると同時に全件正常にBKUPできたことを確認できるクエリ

これもよく使うのでメモメモ...../(._.)
基本的にはテーブルバックアップクエリが正常終了していれば問題ないはずだけど念のために間違いなくバックアップとりたいテーブルがちゃんと取れているのか確認することってよくありますよね。(私はあります)


select *

into コピー先テーブル名 from コピー元テーブル名;


select 'コピー元テーブル名' as 'table_name',

(select count(*) from  コピー元テーブル名) as 'moto',

(select count(*) from  コピー先テーブル名) as 'saki',

  (select case

        when (select count(*) from  コピー元テーブル名) =(select count(*) from  コピー先テーブル名)  then 'OK'

       else 'NG'

       end ) as '比較結果'


簡単だけどこれを流せば一発で全件とれたかの確認もデキルゼ!

フォルダ内のファイル名リストをとりたい

これもたまーに使いたい時にパッと出てこないのでメモしておこう

ファイルの整理や、ドキュメント作成でほんとたまに使うよね。

 

■指定したフォルダのファイル名・サブフォルダ名を出力。
Dir /b C:\sample > C:\sample\test.txt

■指定したフォルダのファイル名のみ出力。サブフォルダ名は出力しない。
Dir /b /a-d C:\sample > C:\sample\test.txt

■指定したフォルダのファイル名、サブフォルダ名の全てのファイル名をフルパスで出力。
Dir /b /s C:\sample > C:\sample\test.txt

【セゾン】4日引き落としの処理時間は何時?答えではないがだいぶ絞った。

口座に引き落とされる分のお金が入っていない!

しかも今日が引き落とし日の4日!

という事態に陥った時のメモ。


支払金額が不足していて、口座からの引き落としが不可だった場合、後日セゾンからハガキが届くらしい、

しかも支払う金額にペナルティが課せられるらしいしかも調べたら、数%とかではなく、ガッツリ(忘れたけど10%以上)持っていかれそうなことが分かった。


今月の支払い額が20万を超えていたので、もしペナルティになったら支払がちょっと遅れただけでも数万の損害が出ると思い必至でいろいろした時のメモです。


クレジットカードはセゾンで

支払口座は三菱東京UFJ

結論からいうと処理時間は13:45~16:30の間だ!

今回の出来事、4日当日にUFJの口座に支払額が入っていないことに気付き午後13:45くらいにスマホを使って楽天銀行の口座からUFJの口座に不足分を入金した。

楽天からUFJへの入金はほぼリアルタイムで入金されていると思う。

もし、AM中にセゾンの引き落とし処理が終わっていたら時すでに遅しだが、スマホで口座の経過観察をしていたら16:30くらいにUFJの口座から支払がされた。

ほっと、したのと同時に引き落とし処理の時間は13:45~16:30の間であることが分かった。(もしかしたら月によって違ってたり、一日に数回処理回数があるかもしれん。サポートセンターに問合せてその辺教えてくれるのかもなぞ、でも今回は間に合ったからよかった。)


もしこれが間に合わなかったら次の手として、セゾンの明細確認できるサイトから「支払い」というメニューがあるのでここから支払が可能っぽかった。

引き落としに間に合わなくても、4日中にこのサイトから支払処理すればペナルティ免れるのではないかと思った次第でした。
以上!

【SQLserver】存在するはずのテーブルが表示されない原因

 

今日も暑いです。
今日は、存在するはずなのに目には見えないというちょっとホラーなメモ。

テスト環境でSQLserverManagementStudioを開き、通常通りにデータベースエンジンにSQLserver認証で接続したところ
下記のエラーが発生。
何度やっても、オブジェクトエクスプローラーで何を叩いても同じ文言が発生。

-----------------------------------------------------------
値を Null にすることはできません。

パラメータ名: viewInfo (Microsoft.SqlServer.Management.SqlStudio.Explorer)
-----------------------------------------------------------

いろいろ調べてやっとたどり着いたのがこちら。の下記文言部分。
https://stackoverflow.com/questions/15249398/value-cannot-be-null-parameter-name-viewinfo
>I got this error on our remote shared server. Turned out that our C drive did not have any space left.
>
>I got it working by asking my colleague to close his SQL Server Management Studio session and it cleared up 7 GB right away! I could login then! Woot woot!

【原因】


Cドライブの空き容量が不足。
たしかに空き容量はなんと「0」の状態でした!

【解決方法】


不要ファイルを探し、削除。
約350MBくらい空けてから再度SSMSを再起動したらエラーは発生しなくなりました!

調べていると権限の設定ファイルがどうこうっていうのがあったけど、そんなんイジッたこともないし
どう編集すればいいかもちんぷんかんぷんだった。

今回は空き容量を作るだけで正常に戻ってよかったー

 

分かりやすい標準偏差

統計学では標準偏差をσ(シグマ)で表す。
そもそも標準偏差とは何かを一言で言うと
平均値からの揺らぎ(広がり)です。
つまり、平均値からどのくらい離れていてもわりと普通の値なのか、ということの指標になります。

式で書くと、標準偏差σはこのようになる。

f:id:rodeeeen:20170809135759p:plain


式で見るととても難しそうだが一旦意味を理解してしまえばさほどでもないので
分かりすく噛み砕いていきます。

標準偏差を分かりやすく説明する例として、何でもいいのですが、男性の平均身長を例にしてみましょう。

今ここに標本(統計の計算の元となるサンプル的なもの)となる男性10人がいるとします。
それぞれの身長を分かりやすく2cm刻みで、
170cm、172cm、174cm、176cm、178cm
180cm、182cm、184cm、186cm、188cm

の10人がいるとしましょう

ここからまず平均値を出します。
平均値は全員の身長を足して人数で割りますので
(平均値)= 1790 / 10 = 179cm

179cmになります。

次にここから標準化という考え方をします。
これは何かというと平均の179を0として考えるということです

つまり179がゼロなので、全員の身長から-179をすればいいわけです

そうすると、
-9、-7、-5、-3、-1、1、3、5、7、9
となります。

この数字はそれぞれが平均値からどのくらい離れているのか、ということがぱっと見でわかるようになります。
そしてさらに、±9の差があることをもっとまとめたいので
つまりマイナスの記号をなくしたいので、それぞれの値を二乗します。

すると、今度はこうなります。
81、49、25、9、1、1、9、25、49、81、

そして、もう一回この状態で平均を取ります。
つまり、上記の10個の数値をまた足して10で割ればいいわけですね。

330 / 10 = 33

この作業をすることでマイナスを排除することが出来ました。

最後に、この33という数値は、二乗しているのでそれを戻します。
二乗を戻すには、ルートに入れます。
√33

ルート33は綺麗には割り切れませんが
5の二乗の25と、6の二乗の36の間ですので、
5.xxxx という数字になるはずですね。

一応計算式で計算すると、5.74456264654 と出てきました。

この5.7が標準偏差σです。


ここまでの流れを数式にしたのが冒頭に出たこれです。

f:id:rodeeeen:20170809135814p:plain


Σは総和を意味しています。一人目から十人目までを足していってます。
Xiは一人ひとりを表しています、つまり、X1さん、X2さん、、、、X10さん
Xの上に線が入っている記号が平均値になります、今回の場合だと179cmですね
nはXが何人いるかのカウントですので、今回だと10人ですので10となります。
iはそのカウントは1から始まるよ、ってことです、たいてい1から数えますよね。
二乗している理由と、ルートで戻している理由は左記に述べたとおりです。

こんな感じで、式だけ見たら厄介だけど、何をしたかったのかを理解できれば、この式もすんなり入ってきくると思います。

この次の話としては、じゃぁその標準偏差の使い方は?ってことなんですが、
それは正規分布の話をしてからじゃないとなので、また今度気が向いたらで.