重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

1分に1回レコードが出力されたログファイルがあります。
これはCSV形式のファイルです。ファイルは15ファイルあります。
各ファイルの列数は違っていて60~260まであります。
必要なデータが記録されている列もファイルによって違いますが
各ファイルともいらない列が半分くらいありデータは無いか"-"になっています。
データは大体整数4桁小数2桁の数値です。

毎月一回集計しないといけないので各ファイルに対応したテーブルを作り
データを読み込みたいと思います。
過去分を持つとレコード数が増えるので毎回読み込みからにしたいと思います。

データをテーブルに取り込むやり方を考えています。
VBでシステムを作っているのでファイルを1行ずつ読み
必要なデータをインサートするのがいいのか
SQLServerの機能を使って全部読み込むのがいいのか
何を調べて判断すればいいのかアドバイスをお願いします。
VBは2008でSQLServerも2008でやろうかと考えています。

A 回答 (1件)

バッチ処理で1行ずつINSERTするのはさすがにナンセンスでしょう。


・ログファイルはどこにあるのですか?
・SQL Serverのエディションは?
サーバにあるなら、BCPユーティリティ、SSIS、xp_cmdshell+BULK INSERTのいずれか
ローカルにあるなら、BCPユーティリティかSSIS
で実行するのがよいと思います(SSISはStandard以上です)。

SSISはBIDS(VB2008のBusiness Inteligence Development Studio)でグラフィカルに作れますが、プログラミング志向ならばそれ以外の方法も取れます。

あとはサーバ管理者の意見も聞いてみるのがいいでしょう。
(SSISがインストールされていないならインストールする必要があるし、xp_cmdshellは少しセキュリティを緩める必要がありますので)

この回答への補足

SQLSeverのエディションは必要な機能に合わせて
これから調達します。
取り込むファイルも実行するプログラムも
SQLServerも全て同じマシンに用意します。
必要な機能があれば申請するとどうにでもなります。(多分)

BCPユーティティがお金もかからず簡単に出来そうな気がしてきました。

補足日時:2009/06/05 14:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す