2010年11月12日金曜日

Visio 2007 ステンシル一覧

Visioを開くとまず図面の種類を選択する画面が表示され、選択した種類に応じたステンシルが図形ウィンドウにロードされます。

しかし、作業を進めていると図形ウィンドウに最初にロードされたステンシル以外の物を利用したくなるのですが、目的の物をさがすのがなかなかやっかいです。

まず、メニュー バーの「図形」をクリックし、目的のステンシルがありそうなカテゴリーを選択し、時にはそのサブカテゴリーへと移動し、そして適当な物を選ぶと図形ウィンドウにロードされます。その時点で目的のステンシルが見つかれば良いですが、見つからない時はこの作業を延々と繰り返すことになります。170ほどに分類されたステンシルを全て覚えていれば大丈夫でしょうが、なかなか難しいでしょう。

図形ウィンドウにはステンシル検索用のボックスも用意されていますが、部分一致検索に対応しておらず、例えば「サーバー」で検索して引っかかる物が「サーバ」では引っかかりません。目的のステンシルを探すには、そのステンシルを探すための完全なキーワードを知っていないといけないのです。
なんとか目的のステンシルを見つけやすくするために、デフォルトでVisio 2007に入っているステンシルの一覧を作成してみました。

・・・しかし、あまりの多さにこの一覧を見ることすら結構大変です。どうぞ部分一致検索に対応して欲しいものです。2010では対応しているのでしょうか?

(2013/2/7追記)
2010版も作成しました。
http://2ndgd.blogspot.jp/2013/02/visio-2010.html


[Visioエキストラ]










[エンジニアリング]






























[スケジュール]



[ソフトウェアとデータベース]

























[ネットワーク]















[ビジネス]






















[フローチャート]










[一般]



[地図とフロアプラン]











































2010年10月27日水曜日

猫の手遊び

ネットで紹介されていて思わず笑ってしまったので紹介


2010年10月25日月曜日

QRコード作成

シーマンさんのサイトを利用してQRコードを作成してみました。
http://www.cman.jp/QRcode/

QRコードって無料で簡単に作れるんですね。

2010年10月19日火曜日

SQL Server への CSV データのインポート

CSVファイルのデータをSQL Serverへ取り込むといった要望は結構あるのではないかと思います。
例えば商品データベースをバッチで更新するのにCSVファイルをアップロードするような場合です。

Integration Services を利用する。
bcp コマンドを利用する。
などの方法がありますが、BULK INSERT を用いた方法をメモしておきます。

例として以下のような商品テーブルを考えます。

[T_商品]
製品番号 nvarchar(50)
商品名 nvarchar(50)
価格 int


◆インポートしたいデータがカンマやタブで区切られている場合

[インポートデータ1.csv]
1234-5678,フォーク,120
9876-5432,スプーン,100

以下のような式でインポートすることができます。
BULK INSERT T_商品 FROM 'C:\インポートデータ1.csv'
   WITH (
      DATAFILETYPE = 'char',
      FIELDTERMINATOR = ',',
      ROWTERMINATOR = '\n'
);
データがタブ区切りの場合「FIELDTERMINATOR = '\t'」を指定します。


◆インポートしたいデータ内に区切り文字が含まれテキスト修飾子がある場合

[インポートデータ2.csv]
"1234-56789","おもちゃA 対象年齢2,3才",1200
"9876-54321","おもちゃB 付属品C,D",1000

このようなデータを前述のようにカンマ区切りで単純にインポートしたのでは
フィールドに含まれるカンマでも区切ってしまいエラーとなります。
この場合、フォーマットファイルというものを別途作成します。

[フォーマットファイル.xml]
<?xml version="1.0"?>
<BCPFORMAT 
xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <RECORD>
    <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="&quot;"/>
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="&quot;,&quot;"/>
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="&quot;,"/>
    <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n"/>
  </RECORD>
  <ROW>
    <COLUMN SOURCE="2" NAME="number" xsi:type="SQLNVARCHAR"/>
    <COLUMN SOURCE="3" NAME="name" xsi:type="SQLNVARCHAR"/>
    <COLUMN SOURCE="4" NAME="price" xsi:type="SQLINT"/>
  </ROW>
</BCPFORMAT>
<RECORD>に各<FIELD>をどこで区切るかを記述します。
そして<ROW>にはどのデータ(ID)がインポート先のどのフィールドに合致するかを記述します。
ただし<COLUMN>のNAME属性の値はデータベースのフィールド名と一致しなくても構いません。


この場合に記述すべきSQL文は以下のとおりです。
BULK INSERT T_商品
FROM 'C:\インポートデータ2.csv'
WITH (FORMATFILE='C:\フォーマットファイル.xml');

TRUNCATE TABLE T_商品;
などと組み合わせてストアドプロシージャに記述し、ジョブに登録するなどして
定期的にデータのリフレッシュなどに利用できます。



[参考]
一括インポート操作と一括エクスポート操作について

BULK INSERT (Transact-SQL)

XML フォーマット ファイルのスキーマ構文