'定数 値 内容
' vbEmpty 0 Empty値
' vbNull 1 Null値
' vbInteger 2 整数型
' vbLong 3 長整数型
' vbSingle 4 単精度浮動小数点数型
' vbDouble 5 倍精度浮動小数点数型
' vbCurrency 6 通貨型
' vbDate 7 日付型
' vbString 8 文字列型
' vbObject 9 オブジェクト
' vbError 10 エラー値
' vbBoolean 11 ブール型
' vbVariant 12 バリアント型(バリアント型配列にのみ使用)
' vbDataObject13 非OLEオートメーションオブジェクト
' vbDecimal 14 10進数型
' vbByte 17 バイト型
' vbArray 8192配列
Public Sub var_dump(ByVal obj As Scripting.Dictionary)
Dim pi As Variant
Dim strVal As String
Static strTab As String
strTab = strTab + vbTab
For Each pi In obj.Keys
If Not IsObject(obj.Item(pi)) Then
Select Case VarType(obj.Item(pi))
Case vbEmpty
strVal = "(Empty)"
Case vbNull
strVal = "(NULL)"
Case vbInteger
strVal = "(Interge)"
Case vbLong
strVal = "(Long)"
Case vbSingle
strVal = "(Single)"
Case vbDouble
strVal = "(Double)"
Case vbCurrency
strVal = "(Currency)"
Case vbDate
strVal = "(Date)"
Case vbString
strVal = "(String)"
Case vbDecimal
strVal = "(Decimal)"
Case vbByte
strVal = "(Byte)"
Case vbArray
strVal = "(Array)"
End Select
Debug.Print strTab & pi & " -> " & strVal & obj.Item(pi)
Else
If TypeName(obj.Item(pi)) = "Dictionary" Then
var_dump obj.Item(pi)
Else
Debug.Print strTab & pi & " -> " & "(object)" & TypeName(obj.Item(pi))
End If
End If
Next
End Sub
2012年10月7日日曜日
VBAのscripting.dictionaryをPHPのvar_dumpみたいに出力
ラベル:
vba
2012年10月4日木曜日
CREATE TABLE SELECTの中にAUTO_INCREMENTのIDを付ける、おまけにCHARACTERをUTF8
ラベル:
mysql
CREATE TABLE SELECTの中にAUTO_INCREMENTのIDを付ける、おまけにCHARACTERをUTF8
create table nek_in_tdb
(
id INT PRIMARY KEY AUTO_INCREMENT
,company_code VARCHAR( 25 ) NOT NULL ←無くでも問題ない
,name_jp VARCHAR(255) NOT NULL ←無くでも問題ない
) CHARACTER SET 'utf8'
select distinct
n.company_code
,n.name_jp
from company_tdb t
inner join company_nik n
on t.search_key = n.name_jp;
2012年9月27日木曜日
今日知った、mysqlの罠、ハァ・・(ノω=;)
今日の罠(常識かも)
①mysqlのクエリーでは「○○ <> True」使わない方がいいです。NULLのものが入ってこないから。
「○○ = False or ○○ IS NULL」が正解
②「union」では勝手に一意してくれるから、そうさせたくないときは「union all」
①mysqlのクエリーでは「○○ <> True」使わない方がいいです。NULLのものが入ってこないから。
「○○ = False or ○○ IS NULL」が正解
②「union」では勝手に一意してくれるから、そうさせたくないときは「union all」
2012年9月26日水曜日
selectした内容をシーケンス(Sequence)付きで新しいテーブルに挿入
ラベル:
mysql
insert into new_table (
seq
,fund_name
,rank_org
,yyyymm
,period)
SELECT
@row := @row + 1 as seq
,fund_name
,rank as rank_org
,yyyymm
,period
FROM old_table t,
(SELECT @row := 0) r
where yyyymm = '201203'
and period = '1m'
order by rank desc limit 10;
count caseで月次統計クエリー、タイトル付きでCSV出力
ラベル:
mysql
SELECT 'Product_ID', 'Product_Name', 'Total', 'Jan', 'Feb',... //csvのタイトルを出力
UNION
SELECT product_id,
product_name,
Count(*), //合計
Count(CASE
WHEN RIGHT(yyyymm, 2) = '01' THEN 1
END) AS 'Jan', //1月の合計
Count(CASE
WHEN RIGHT(yyyymm, 2) = '02' THEN 1
END) AS 'Feb', //2月の合計
...
...
FROM sales_table
GROUP BY product_id
into outfile 'c:\\prod_monthly.csv' FIELDS TERMINATED BY ',';//csvに出力
2012年9月21日金曜日
住所をマッピングする為に、mysqlのLEFTとINSTRで関数で住所の検索キーを生成
まずは町、区、市、郡まで切り捨て
そして、もっと大雑把、都道府県
DBのエンコードはUTF8だけど、データ自体のエンコードはsjisになっている。
windowsのコマンドプロンプトからmysqlのコンソールにアクセスしているので、
上記クエリーを投げでもなぜかうまくいかない...
ここですごい人に見てもらって、どうもコマンドプロンプトのエンコードのせいかも
コマンドプロンプトのエンコードを変えるコマンドchcp(change code page)
とにかく、DOSのコマンドプロンプトで2バイドのものは書かないで
phpmyadminやnavicatなどSQLクライアントを使いましょう。
ALTER TABLE company_nikkei ADD shi_addr_key VARCHAR( 255 ) NULL;
UPDATE company_nikkei SET shi_addr_key =
LEFT(address,CASE
WHEN INSTR(address,'町') <> 0 THEN INSTR(address,'町')
WHEN INSTR(address,'区') <> 0 THEN INSTR(address,'区')
WHEN INSTR(address,'市') <> 0 THEN INSTR(address,'市')
WHEN INSTR(address,'郡') <> 0 THEN INSTR(address,'郡')
END);
そして、もっと大雑把、都道府県
ALTER TABLE company_nikkei ADD to_addr_key VARCHAR( 255 ) NULL;
UPDATE company_nikkei SET to_addr_key = CASE WHEN INSTR(address,'東京都') <> 0 THEN '東京都'
WHEN INSTR(address,'北海道') <> 0 THEN '北海道'
WHEN INSTR(address,'大阪府') <> 0 THEN '大阪府'
WHEN INSTR(address,'京都府') <> 0 THEN '京都府'
WHEN INSTR(address,'県') <> 0 THEN LEFT(address,INSTR(address,'県'))
WHEN INSTR(address,'市') <> 0 THEN LEFT(address,INSTR(address,'市'))
ELSE '不明' END;
DBのエンコードはUTF8だけど、データ自体のエンコードはsjisになっている。
windowsのコマンドプロンプトからmysqlのコンソールにアクセスしているので、
上記クエリーを投げでもなぜかうまくいかない...
ここですごい人に見てもらって、どうもコマンドプロンプトのエンコードのせいかも
コマンドプロンプトのエンコードを変えるコマンドchcp(change code page)
>chcp
現在のコード ページ: 932
> chcp 65001
↑UTF8
とにかく、DOSのコマンドプロンプトで2バイドのものは書かないで
phpmyadminやnavicatなどSQLクライアントを使いましょう。
2012年9月18日火曜日
ついに僕もSSDデビュー
秋葉原からIntelSSD(120G)購入、8000円くらいでした。
セットアップに一苦労…
グラフィックカードが大きい過ぎで、唯一開いているSATAを完全隠した。
幸いファンのあたりだったので、無理やりグラボに穴を貫通してSSDのSATAケーブルを通した。
あとはマンターをつけて、固定しました。
物理繋いたら、あとはCドライブの移行です。
移行作業は割りと簡単、Intelの専用ソフトがあったので、ソース(既存Cドライブ)とターゲット(SSD)を選択して、「次へ」⇒再起動。そしてデータのコピーが終わったらシャットダウンして、SATAケーブルの差し替えを行う。
ここで説明書ではSWAPと書いてますが、実はここで差し替えたらドライブレターが乱れることがありますので、元CドライブのSATAケーブルをSSDに接続したら、一旦元CドライブHDDをOFFLINEにしたほうがいいです。
そしてWindowsを起動して、ちゃんとSSDがCドライブになっているを確認したら、再度PCをシャットダウンして、元CドライブのHDDもONLINEさせて、起動すると、ドライブレターがちゃんと変わります。
まぁメモメモ
PS:肝心なBOOTスピードは…まぁ驚く程のスピード感は感じ取れなかったが、実際いろいろ使ってみたら、確かに以前より3,4割早くなっている体感。まぁまぁ8000円だから、良かったと思う!
セットアップに一苦労…
グラフィックカードが大きい過ぎで、唯一開いているSATAを完全隠した。
幸いファンのあたりだったので、無理やりグラボに穴を貫通してSSDのSATAケーブルを通した。
あとはマンターをつけて、固定しました。
物理繋いたら、あとはCドライブの移行です。
移行作業は割りと簡単、Intelの専用ソフトがあったので、ソース(既存Cドライブ)とターゲット(SSD)を選択して、「次へ」⇒再起動。そしてデータのコピーが終わったらシャットダウンして、SATAケーブルの差し替えを行う。
ここで説明書ではSWAPと書いてますが、実はここで差し替えたらドライブレターが乱れることがありますので、元CドライブのSATAケーブルをSSDに接続したら、一旦元CドライブHDDをOFFLINEにしたほうがいいです。
そしてWindowsを起動して、ちゃんとSSDがCドライブになっているを確認したら、再度PCをシャットダウンして、元CドライブのHDDもONLINEさせて、起動すると、ドライブレターがちゃんと変わります。
まぁメモメモ
PS:肝心なBOOTスピードは…まぁ驚く程のスピード感は感じ取れなかったが、実際いろいろ使ってみたら、確かに以前より3,4割早くなっている体感。まぁまぁ8000円だから、良かったと思う!
登録:
投稿 (Atom)