2009年12月1日火曜日

Windows PowerShellにて、Shift JIS形式のCSVファイルをSQL-Server2008へ送り込む処理(2)


前回の記事では、64bitシステムにおいて、Shift JIS形式のCSVファイルを読み込んで、SQL-Server 2008にテーブルとしてデータを送り込む処理を作ってみました。

今回は、その処理の中を掲載させて頂きます。
処理は、手順ごとに、複数のWindows Power Shellの関数に分けて作ってあります。
ちなみに、64bitシステムで実行するので、調子に乗って数値をInt64で扱ってみました

CSVファイルは、もちろんShift JIS形式ですが、隠しパラメータでUnicode(UTF-8)にも対応してます。
CSVファイルの一行目は、ヘッダとして認識します。

CSVデータを読み込むのは、System.IO.StreamReaderクラス。
文字コードをShift JISにしてデータを読み込んでもらうわけです。

CSVファイルは、すべてテキストとして読み込み、SQL-Server 2008のテーブルも全項目がnvarchar形式。データ長は、CSVファイルの各要素ごとに最大長を求めてそれにしております。

SQL-Server 2008との連携は、ADO.NETのクラスを介して行う事が出来ます。
特に何もしなくても標準でこのクラスが使えわけで、Windows Power Shellやっぱいいなぁ・・・。

接続は、Data.SqlClient.SqlConnectionクラスで行い、
作成したクエリーを実行するには
Data.SqlClient.SqlCommandクラスです。
ちなみに、本当は先頭にSystem.が付くのですが、これは省略して書いて良い事になってるんですね。

うーん。Windows Power Shellは、.NET Frameworkと一体化しているとは言え、本当に.NETプログラミングの知識が応用しまくれるのが感動的なところの一つ。

もちろん、コマンドシェルという構造上、完全にそのままではないですけれど、まぁそりゃそうですね。

クラスをインスタンス化するキーワード一つとってみても、newではなくてNew-Objectだったり、それなりに違いはありますけど、マイクロソフトやるなぁという感じですね。