2009年11月22日日曜日

超強引ですが、64bit版 SQL-Server 2008にて、Excelのワークシートのデータを読み込む方法を考えました!


前回の記事では、64bit版Windows7上で稼動する64bit版データベースSQL-Server 2008 Expressにて、Excelのワークシートが読み込めない問題に悩んでいる件について書かせて頂きました。

今回の記事では、超強引なやり方で解決策を考えたので、それについて書かせて頂きます。

まず、やりたい事は、要するに64bitのSQL-Server上のデータベースに、Excelワークシートに格納されているデータを読み込んで来られれば良いわけです。ここの一点突破を図りました。

こういうやり方です。

(1)データの読み込みがAspire 1410で出来ないなら、正常に動作する自作PC上でやらせる。

(2)自作PCには、Excelワークシートを読み込むSQL-Serverプログラム(SP)を作っておく

(3)Aspire 1410から自作PCにリモート接続してそのプログラム(SP)を呼び出す

(4)Aspire 1410側からリモート接続し、自作PC側のSPを実行する。その実行結果たるExcelデータをAspire 1410側でさも自分側で実行したかのように取得する。

(5)結果オーライ

ちなみに、Aspire 1410は「64bit版Windows7と64bit版SQL-Server 2008 Express」、
自作PC は「 32bit版Windows XPと32bit版SQL-Server 2008 Express」です。

以上のように、単体で駄目だったならば、ネットワークを介して、仕事を出来るヤツに分散させてしまえという考え方です。
(64bitで'MICROSOFT.JET.OLEDB.4.0'が使えないなら、32bitで使ってしまえー。ゲットしたデータは、リモート接続で64bitが頂いちゃえば良いぞと。)

これからは、4GB以上に増加して行く利用メモリ量の問題等(32bitでは、どんなにメモリを積んでもユーザーは3GB程度しか利用できない)で、Windowsも64bitが主流になると思います。
だから、もしも64bitに問題があるとすれば、きっと近い将来修正されて、スッキリと解決されるのではないかと期待しています。
それまでは、トリッキーなこの手で行こうかなというところです。

さて、実際にやってみました。
設定をしかるべく行い、SPを作成し、Aspire 1410から自作PCにリモート接続・・・。無事にテストデータが読み込まれました。

データさえ64bit側で受け取れたら、あとはこっちのもの。
これ以降の処理は普通に出来ますし。

それにつけても、SQL-Server 2008 Expressは、Windows7に負けないくらい素晴らしい要素満載ですよねぇ・・・。
またしても色々と感動しまくり。
これがフリーソフトなのですから、世の中えらいことになってんなぁ・・・。

ちなみに、Excelデータと言いますが、Aspire 1410にはマイクロソフトのOfficeがインストールされていないので、データの作成や活用には、これまたフリーソフトのOpenOfficeを使っております。

OpenOfficeは、Excelより少し動作が重たく、企業が使うレベルのVBAの話になると弱いですけれど、立派なオフィスソフト。
Linuxでも使える(対応版が存在する)応用範囲の広さもあるし、とっても魅力的ですよ。